Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Очистка памяти / 12 сообщений из 12, страница 1 из 1
20.04.2007, 14:30
    #34476147
billi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очистка памяти
Создал двумерный массив arr [j]. Сделал вычисления.

int** arr = new int*[n];
for(int i = 0; ii < n; i++)
{
arr = new int[n];
for(int j = 0; jj < n; j++)
{
....
}

Теперь необходимо делаю очистку памяти динамического массива следующим образом:
for (int i=0; i<n; ji++)
{
delete [] arr;
}

delete [] arr;

Но на форуме нашел что достаточно просто в конце дописать:
delete [] arr;
Дайте плз. совет какой метод правильный.
...
Рейтинг: 0 / 0
20.04.2007, 14:37
    #34476192
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очистка памяти
billiНо на форуме нашел что достаточно просто в конце дописать:
delete [] arr;Имхо, нет, не досточно.
...
Рейтинг: 0 / 0
20.04.2007, 14:45
    #34476235
billi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очистка памяти
То есть нужно использовать первый вариант:
for (int i=0; i<n; ji++)
{
delete [] arr;
}
delete [] arr;

Тогда еще один вопрос:
насколько я понял, delete [] не очищает память, а только освобождает ее, то есть значение в данной ячейке будет "жить" пока туда не запишется новое, нужно ли принудительно обнулять ячейку после delete?
...
Рейтинг: 0 / 0
20.04.2007, 14:48
    #34476247
billi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очистка памяти
Исправленный код:
for (int i=0; i<n; ji++)
{
delete [] arr ;
}
delete [] arr;
...
Рейтинг: 0 / 0
20.04.2007, 14:48
    #34476253
billi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очистка памяти
Исправленный код:
for (int i=0; i<n; i++)
{
delete [] arr ;
}
delete [] arr;
...
Рейтинг: 0 / 0
20.04.2007, 14:48
    #34476254
daevaorn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очистка памяти
billiСоздал двумерный массив arr [j]. Сделал вычисления.

int** arr = new int*[n];
for(int i = 0; ii < n; i++)
{
arr = new int[n];
for(int j = 0; jj < n; j++)
{
....
}

Теперь необходимо делаю очистку памяти динамического массива следующим образом:
for (int i=0; i<n; ji++)
{
delete [] arr;
}

delete [] arr;

Но на форуме нашел что достаточно просто в конце дописать:
delete [] arr;
Дайте плз. совет какой метод правильный.

Код совсем не верный
...
Рейтинг: 0 / 0
20.04.2007, 15:11
    #34476344
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очистка памяти
billiИсправленный код:
for (int i=0; i<n; ji++)
{
delete [] arr ;
}
delete [] arr;
Вы используйте тэг SRC, а то буква i в квадратных скобках воспринимается форумом как признак курсива.

Код: plaintext
1.
2.
3.
4.
for (int i= 0 ; i<n; ji++)
{
delete [] arr[i];
}
delete [] arr;
...
Рейтинг: 0 / 0
20.04.2007, 15:23
    #34476388
billi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очистка памяти
daevaorn
Почему код совсем неверный? Все прекрасно работает.
...
Рейтинг: 0 / 0
20.04.2007, 15:39
    #34476474
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очистка памяти
billi пишет:
> *daevaorn *
> Почему код совсем неверный? Все прекрасно работает.

Ты если вообще этот код выкинишь, тоже будет прекрасно все работать, да
только память не освободится.

miksoft правильный код дал.

Обнулять ничего не надо.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
20.04.2007, 15:50
    #34476548
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очистка памяти
MasterZivmiksoft правильный код дал.его дал автор топика, я лишь вставил в тэг SRC.
...
Рейтинг: 0 / 0
20.04.2007, 16:26
    #34476733
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очистка памяти
я фигею, как это вообще может компилиться???
...
Рейтинг: 0 / 0
20.04.2007, 18:28
    #34477258
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Очистка памяти
billiСоздал двумерный массив arr[ i ][ j ]. Сделал вычисления.

int** arr = new int*[n];И вообще, это не двумерный массив, это массив указателей.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Очистка памяти / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]