Форум программистов, компьютерный форум CyberForum.ru

Ошибка при выделении памяти - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ почему не работает фрагмент? http://www.cyberforum.ru/cpp-beginners/thread750059.html
Программа считывает данные из файла, заполняет ими массив bf static char bf; ReadFile(fl, &bf, 100, drd, 0); потом нужно сделать поиск символа в массиве bf делаю так: ... for(int i=0;i<100;i++)
C++ Вывод слов из файла длина которых больше N Есть файл текстовый: rez.txt в нём находятся слова : raz dvas trisz chetirez seven eleven abra Вот написанная мною програмка для считывания слов из файла и вывода на экран слов больше N. Компилируется без ошибок но работает не совсем корректно, т.е. если ввожу N=5 она выводит и слова которые равны 5, а мне нужно только которые больше:( подскажите пожалуйста в чём моя ошибка. #include... http://www.cyberforum.ru/cpp-beginners/thread750054.html
Изучение функция стандартной библиотеки для новичка C++
Здравствуйте! Поделитесь опытом: каким образом надо изучать функции стандартных библиотек С++. Может, надо читать какие-либо книги (книги, сайты), либо что-то другое, где хорошо объясняется их использование.
C++ vector::erase()?
есть вектор структур struct person{ string name; int age; vector <person> repw;
C++ Остаток от деления знакового на знаковое через беззнаковые http://www.cyberforum.ru/cpp-beginners/thread750000.html
Каким текстом можно получить гарантированно правильный результат, если нельзя использовать готовую операцию остатка сразу для знаковых?
C++ Программное создание каталога Как это делается? Достаточно ли просто открыть в поток файлового вывода файл в несуществующем каталоге? Или как? подробнее

Показать сообщение отдельно
OdessaNA
 Аватар для OdessaNA
19 / 19 / 0
Регистрация: 10.01.2011
Сообщений: 240
30.12.2012, 16:16  [ТС]     Ошибка при выделении памяти
Фактически - оно работает, но как я понимаю - в при каждом выполнении цикла под массив temp выделятся новый участок памяти, и ни разу не удаляется?
При завершении цикла массив temp существует:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
#include <conio.h>
using namespace std;
 
void main()
{
    int *array = new int [3];
 
 
    int meter = 0;
    int var = 0;    
    int * temp;
    while(meter < 5)
    {
        cin >> var;
 
        temp = new int [meter + 1]; // выделили память под новый массив
 
        for(int i = 0; i < meter; ++i) // скопировали старые значения
            temp[i] = array[i];
            
        temp[meter++] = var;    // добавили новое значение в конец
 
        delete [] array;   // удалили старый массив
 
        array = temp;  // присвоили arr адрес нового массива
    }
 
    for (int i = 0; i < meter; i++)
    {
        cout << array[i] << ' ' << temp[i] << endl;
    }
 
    delete [] array;
 
    cout << endl << "END";
 
    _getch();
}
Добавлено через 8 минут
Епт., не успел отредактировать.
Объясните, пожалуйста, почему удалая выделенную память под массив array, удаляется память под массив temp?
C++
1
2
3
4
5
6
delete [] array;
    
     for (int i = 0; i < meter; i++)
    {
        cout << array[i] << ' ' << temp[i] << endl;
    }
выводит на экран "мусор".
 
Текущее время: 06:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru