Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.03.2011, 00:16   #11
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Цитата:
Код:
	for (int i = 0; i < 5; i++)
		for(int j = 0; j < 6; j++)
			delete[] dynamic[i][j];
На форуме уже советовали -- не экономить на операторных скобках...
Попробуй так:
Код:
	for (int i = 0; i < 5; i++)
         {
	      for(int j = 0; j < 6; j++) delete[] dynamic[i][j];
         }
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 13.03.2011, 10:25   #12
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию

так и не удалилось... вот результат:
Изображения
Тип файла: png Снимок.PNG (30.1 Кб, 55 просмотров)
Dimarik вне форума Ответить с цитированием
Старый 13.03.2011, 10:44   #13
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию

А теперь с единственной точкой останова. Может он удалился всё-таки????
Изображения
Тип файла: png Снимок2.PNG (28.1 Кб, 53 просмотров)
Dimarik вне форума Ответить с цитированием
Старый 13.03.2011, 20:45   #14
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Вы неправильно проверяете, удалился массив или нет. Вы смотрите на адрес. Массив - это указатель и не более. Вы удаляете память по указателю. Чтобы посмотреть, освободилось ли место, попробуйте разыменовать освобожденный указатель. Если получите исключение - значит освободилась память. Если не получите - проверяйте как работает удаление.
MaTBeu вне форума Ответить с цитированием
Старый 13.03.2011, 21:08   #15
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

Цитата:
Чтобы посмотреть, освободилось ли место, попробуйте разыменовать освобожденный указатель. Если получите исключение - значит освободилась память.
бред. указатель как указывал на область памяти, так и будет указывать. разыменуй - получишь значение, которое там лежит. возможно это старое значение ДО освобождения памяти, возможно новое.

проверить освобождение памяти можно например valgrind-ом
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 14.03.2011, 09:52   #16
Полевой Дмитрий
Новичок
Джуниор
 
Регистрация: 14.03.2011
Сообщений: 1
По умолчанию Есть немного другой путь - возможно решение там

Цитата:
Сообщение от Dimarik Посмотреть сообщение
Вроде все делаю правильно но во время работы прога выдает ошибку. Очевидно неправильно удаляю массив (удаляю не выделенную память)
Не совсем понимаю суть задачи, но возможно вам стоит рассмотреть "перпендикулярный" способ работы с многомерными динамическими массивами. Если вы знаете полную размерность массива до начала работы с ним (уже в момент исполнения), то можно выделить один кусок памяти на весь массив и сделать функцию, которая по набору индексов и размерам каждого из измерений возвращает индекс в этом одномерном блоке. Это и по логике проще и по скорости работы, и по сложности отладки.

Кстати, чем больше размерностей, тем проще в таком подходе в сравнении с массивами массивов массивов...
Полевой Дмитрий вне форума Ответить с цитированием
Старый 14.03.2011, 11:29   #17
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Цитата:
Чтобы посмотреть, освободилось ли место, попробуйте разыменовать освобожденный указатель. Если получите исключение - значит освободилась память. Если не получите - проверяйте как работает удаление.
ИМХО, немного не так.
Просто присвой до освобождения памяти какому-нибудь элементу массива любое значение и проверь его же значение после освобождения памяти.
При правильном освобождении значения совпадать не будут...
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 14.03.2011, 11:42   #18
Dimarik
Форумчанин
 
Аватар для Dimarik
 
Регистрация: 18.04.2009
Сообщений: 688
По умолчанию

Как я понял, у меня все удалилось кроме указателя на int** (из printScreen-a, который я выложил)
Dimarik вне форума Ответить с цитированием
Старый 14.03.2011, 12:06   #19
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

Цитата:
Сообщение от Mandrivnyk Посмотреть сообщение
ИМХО, немного не так.
Просто присвой до освобождения памяти какому-нибудь элементу массива любое значение и проверь его же значение после освобождения памяти.
При правильном освобождении значения совпадать не будут...
еще один бред. если другой процесс не запросил этот кусок памяти, значение останется таким же, никто его не перезапишет
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 14.03.2011, 12:18   #20
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Цитата:
Сообщение от pproger Посмотреть сообщение
еще один бред. если другой процесс не запросил этот кусок памяти, значение останется таким же, никто его не перезапишет
Ну что ж...
Тогда, наверное, действительно, valgrind...
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
сортировка динамических массивов в Си тина сорока Помощь студентам 2 26.02.2010 00:39
Delphi передача динамических массивов world12_tk Помощь студентам 7 23.12.2009 21:06
обработка динамических массивов funky Помощь студентам 0 11.05.2009 17:53
C++. Объявление динамических массивов. Парсифаль Помощь студентам 27 03.05.2009 23:21