|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
11.03.2011, 17:19 | #1 |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
удаление динамических массивов
Вроде все делаю правильно но во время работы прога выдает ошибку. Очевидно неправильно удаляю массив (удаляю не выделенную память)
Код:
Последний раз редактировалось Stilet; 12.03.2011 в 08:22. |
11.03.2011, 17:45 | #2 |
Software Developer
Участник клуба
Регистрация: 01.03.2011
Сообщений: 1,098
|
А можно полностью кусок кода с объявлением динамического массива? Подозреваю, что проблема там...
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв. Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062 |
11.03.2011, 17:54 | #3 |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
unsigned char ** unsCharArray = new unsigned char*[yy];//массив блоков
а вот такое как правильно удалить? Код:
Последний раз редактировалось Stilet; 12.03.2011 в 08:22. |
11.03.2011, 18:23 | #4 |
Software Developer
Участник клуба
Регистрация: 01.03.2011
Сообщений: 1,098
|
Код:
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв. Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062 Последний раз редактировалось Mandrivnyk; 11.03.2011 в 18:29. |
11.03.2011, 18:27 | #5 |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
А как с трёхмерным быть?
|
11.03.2011, 18:29 | #6 |
Software Developer
Участник клуба
Регистрация: 01.03.2011
Сообщений: 1,098
|
Уничтожение трёхмерного массива требует дополнительного цикла. Принцип тот же. Код:
Естественно, подразумевается, что 4, 7 и 5 (размерности массива) -- именно некие переменные, иначе нет смысла связываться с динамическими массивами -) ЗЫ Всех с Пятницей! -))
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв. Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062 Последний раз редактировалось Mandrivnyk; 11.03.2011 в 18:40. |
11.03.2011, 20:33 | #7 |
Форумчанин
Регистрация: 29.09.2010
Сообщений: 636
|
Код:
upd: поправил Последний раз редактировалось onewho; 12.03.2011 в 00:39. |
11.03.2011, 20:57 | #8 |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
Спасибо!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!
for (i = 0; i < 5; i++) delete[]dynamic[i]; delete[] dynamic; зачем тут цикл? и почему нельзя написать просто последнюю строчку? Посмотрел в отладчике. Кажется, я не до конца очистил память: Код:
сТРАННО. Сейчас ошибка: обращение по невыделенной памяти access violantation Код:
Код:
Последний раз редактировалось Stilet; 12.03.2011 в 08:24. |
12.03.2011, 00:19 | #9 | |
Software Developer
Участник клуба
Регистрация: 01.03.2011
Сообщений: 1,098
|
Цитата:
Сначала создается одномерный массив указателей (i), потом каждому элементу этого массива присваивается адрес двумерного массива, который (массив) также является массивом указателей (j), каждый из которых указывает уже на одномерный массив указателей (k). Таким образом, первый из созданных массивов (i) является массивом указателей на указатели на указатели. Немного запутано -- пятница, все-таки -) -- но, думаю, идея понятна. При удалении надо освободить память в обратном порядке. Вначале освобождается память, выделенная под массив (k) -- двойным циклом по индексам (j) и (i). Затем -- память, выделенная под массив (j) -- циклом по индексу (i). И только в самом конце -- память, выделенная под массив (i). Цикл не нужен. Чтобы убедиться в этом -- просто посчитай, для скольких элементов ты вызвал оператор new() и сравни с числом вызовов оператора delete(). Насколько я понимаю, количество вызовов должно быть равно. Именно поэтому ты и получал ошибку Access Violation Я ответил на твой вопрос?
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв. Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062 |
|
12.03.2011, 17:07 | #10 |
Форумчанин
Регистрация: 18.04.2009
Сообщений: 688
|
Я сделал всё как ты мне сказал, но он кажись не удалился.
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
сортировка динамических массивов в Си | тина сорока | Помощь студентам | 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 |