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

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

Войти
Регистрация
Восстановить пароль
 
sacred363
Сообщений: n/a
#1

Правильно ли очищается память? - C++

26.10.2010, 22:36. Просмотров 476. Ответов 2
Метки нет (Все метки)

сть программа которая работает с динамическим массивом.
работает она так:
C++
1
2
3
4
5
6
7
8
9
10
int** a = new int*[n];
 
for(int i=0; i<nl i++)
a[i] = new int[n];
 
// работа с массивом
 
for(int i = 0; i<n; i++)
delete a[i];
delete a;
Вопрос: правильно ли очищается память? В том смысле что нужно ли писать в цикле так:
delete[] a[i];
или достаточно текущего варианта?
В отладчике смотрел оба варианта - все очищает одинаково, но дело в том что преподаватель этот вариант считает неправильным.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.10.2010, 22:36     Правильно ли очищается память?
Посмотрите здесь:

Динамические массивы: очищается ли память? - C++
Здравствуйте. Подскажите, пожалуйста, по поводу динамических массивов. Допустим, есть вот такой код: int *massive = new int; int...

Не очищается динамическая память, codeblocks - C++
При каждой новой прогонке сумма выдается все больше и больше. если что, само задание - в одномерном массиве найти сумму всех модулей...

Cpp. Как очищается память в функциях? - C++
Я привык, что чисткой памяти занимается GC. А тут надо написать библиотеку на Cpp. От сюда базовые вопросы: Как себя ведет память в...

Очищается ли вся динамическая память по завершению программы? - C++
#include&lt;stdio.h&gt; #include&lt;malloc.h&gt; #include&lt;string.h&gt; #include&lt;locale.h&gt; const int Max = 100; void main() { ...

Правильно ли я освобождаю память - C++
Вот есть примерно такой код. Метод baseFactory() постоянно вызывается и там генерируется новый объект класса. Правильно ли я освобождаю...

Как правильно освободить память - C++
Здравствуйте все! Подскажите, как правильно освобождать память, выделенную под массив оператором new? int *Arr = new int; ... delete...

Как правильно освобождать память - C++
Подскажите пожалуйста ,где память чистить в таком случае?Или как это правильно сделать. char *funk(.....){ char *name = new...

Не могу правильно выделить память - C++
Прошу помощи #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;windows.h&gt; #include &lt;memory.h&gt; #include...

Как правильно освободить память - C++
Написал вот такой костыль: wchar_t* getDate() { time_t seconds = time(NULL); tm timeinfo = *(localtime(&amp;seconds)); return...

Как правильно освободить память - C++
Здрасте! (Тема: Шаблоны функций.) Не могу правильно написать метод для освобождения памяти. В мейне делаю все необходимые мне...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
В астрале
Эксперт С++
7969 / 4731 / 320
Регистрация: 24.06.2010
Сообщений: 10,539
Завершенные тесты: 3
26.10.2010, 22:49     Правильно ли очищается память? #2
sacred363, Полезнее delete[] a[i];
delete[] a;

Все же мы удаляем массивы.
volovzi
267 / 169 / 8
Регистрация: 14.03.2010
Сообщений: 501
27.10.2010, 01:42     Правильно ли очищается память? #3
Работа с памятью происходит по принципу стека: как память выделилась, так она и должна быть удалена. Если память выделялась под один объект, то есть оператором "new", то память освобождается оператором "delete", а если под массив (оператором "new[]"), то, соответственно, "delete[]". Удаление может срабатывать и с "не своим" оператором, но стандартом это не гарантируется, и потому в общем случае это ведёт к неопределённому поведению.

А вообще, если задание не заключается конкретно в управлении памятью, то советую использовать контейнеры (по-умолчанию следует выбирать std::vector) — они сами следят за выделением и освобождением памяти. Сишные же массивы — устаревшая концепция, и в плюсах используется редко.
Yandex
Объявления
27.10.2010, 01:42     Правильно ли очищается память?
Ответ Создать тему
Опции темы

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