Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.87
xadd
0 / 0 / 0
Регистрация: 25.07.2006
Сообщений: 10
#1

new и delete при освобождении памяти - C++

25.07.2006, 03:10. Просмотров 1851. Ответов 3
Метки нет (Все метки)

Здравствуйте.
Скажите, пожалуйста что я неправильно делаю. При освобождении памяти.
Выделяем память:
char **VIRTUAL = NULL;
if (VIRTUAL == NULL)
{
VIRTUAL = new char*[50];
for (i = 0; i < 50; i++)
VIRTUAL[i] = new char[50];
}
Освобождаем:
if (VIRTUAL != NULL)
{
for (i = 0; i < 50; i++)
delete VIRTUAL[i];
delete VIRTUAL;
VIRTUAL = NULL;
}
С уважением, Дмитрий.
</P>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.07.2006, 03:10
Здравствуйте! Я подобрал для вас темы с ответами на вопрос new и delete при освобождении памяти (C++):

Ошибка при освобождении памяти (delete) - C++
Здравствуйте! Есть массив lines, созданный вот так : int *line = new int ; Потом, пытаюсь его удалить и пересоздать : delete...

Ошибки при освобождении памяти - C++
В приложении обрабатывается сообщение WM_DROPFILES, при попытке удаления строк szFileNameA и szFileNameW вылетает ошибка &quot;HEAP CURRUPTION...

Ошибка при освобождении памяти - C++
Все идет замечательно, но вот когда происходит удаление массива программа крашится.. #include &lt;iostream&gt; using namespace std; ...

Ошибка при освобождении памяти - C++
#include &lt;iostream&gt; using namespace std; template&lt;class T&gt; class pvector { T **p; int sz; public:

Ошибка при освобождении памяти? - C++
Доброго времени суток! Я только-только взялся за изучение c++. Дошел до динамической памяти (разбираю по учебнику) и столкнулся с...

Ошибка при освобождении памяти - C++
Задача: Из стандартного входного потока вводятся сроки. Признаком завершения каждой сроки является символ ‘\n’. Признаком конца текста...

3
boombastik
7 / 7 / 0
Регистрация: 13.02.2007
Сообщений: 1,255
25.07.2006, 14:51 #2
VIRTUAL[i] - у тебя массив, обычно память отведенная под массив освобождается оператором delete[], то есть должно быть так:



delete[] VIRTUAL[i];



Удачи,

Владимир
0
xadd
0 / 0 / 0
Регистрация: 25.07.2006
Сообщений: 10
25.07.2006, 20:00  [ТС] #3
boombastik (25.07.2006)
VIRTUAL[i] - у тебя массив, обычно память отведенная под массив освобождается оператором delete[], то есть должно быть так:

delete[] VIRTUAL[i];

Удачи,
Владимир
т.к в цикле delete[] VIRTUAL[i], а потом delete[] VIRTUAL?
С уважением, Дмитрий.
0
boombastik
7 / 7 / 0
Регистрация: 13.02.2007
Сообщений: 1,255
26.07.2006, 16:18 #4
да, попробуйте
0
26.07.2006, 16:18
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.07.2006, 16:18
Привет! Вот еще темы с ответами:

Ошибка при освобождении памяти - C++
Добрый День! Написал простую программу для понимания сути. Проблема в том, что код, который прилагается выдает ошибку. Но если убрать...

Ошибка при освобождении памяти - C++
Здравствуйте! Пишу на MS Visual C++ 2010, windows 7. При вызове функции resize() на строке delete arr; происходит ошибка,...

Ошибка при освобождении памяти - C++
Здравствуйте, программа завершает работу в этом коде #include &lt;iostream&gt; #include &lt;ctime&gt; #include &lt;cmath&gt; int main() { ...

Исключение при освобождении памяти - C++
Как ловить ошибки, типа: int* a = new int; for(int i = 0; i &lt; 5; ++i) a = 1; delete a;в 4-ой строке вылезит ошибка, при этом в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.