|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
13.10.2017, 15:06 | #1 |
Форумчанин
Регистрация: 03.03.2013
Сообщений: 102
|
Освобождение памяти из под динамического двумерного массива
Здравствуйте, товарищи-программисты и просто любители программировать на с++ (я, например, скорее к последним отношусь)!
Проблему ярко характеризует заголовок, тема и описывают комментарии в коде. Должно быть, у меня какая-то очень тупая ошибка, даже заранее стыдно, но я не могу освободить память... Код, представленный ниже, я хотел использовать в качестве тестирующей обёртки для решения определённой задачи. Код:
Последний раз редактировалось Haric_110; 13.10.2017 в 15:55. |
13.10.2017, 21:49 | #2 |
Форумчанин
Регистрация: 03.03.2013
Сообщений: 102
|
Эх, видать, ошибка не так очевидна...
|
14.10.2017, 01:37 | #3 | |
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
|
Для начала:
Код:
Цитата:
Последний раз редактировалось Croessmah; 14.10.2017 в 01:41. |
|
14.10.2017, 07:57 | #4 |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
Двумерный массив - это массив указателей на указатели.
Код:
Код:
Но такое делают достаточно редко, чаще выделяют 1-мерный массив размера m * n, и работают типа *(string + i *n +j) через арифметику указателей. В таком варианте, память под данные будет в непрерывном блоке, можно его копировать через memcpy и т.д. Последний раз редактировалось alexzk; 14.10.2017 в 08:03. |
14.10.2017, 08:16 | #5 |
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
|
|
14.10.2017, 08:40 | #6 | |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
Цитата:
Здесь сделали массив указателей: strings = new char *[m]; Здесь первому из указателей в массиве присвоили память m *n *strings = new char[m * n]; А на кой черт остальные указатели в массиве m-1 чтука. |
|
14.10.2017, 08:50 | #7 |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
|
14.10.2017, 09:00 | #8 |
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
|
Следом эти указатели "настраиваются" на свои "измерения".
Таким образом мы сохраняем возможность обращения по индексам. Без имени.png |
14.10.2017, 09:08 | #9 |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
Чепуха какая-то времен С.
Плохо, что ее в программу на С++ тащат. По-моему, или делай одномерный массив с арифметикой указателей, или делай класс, с перегрузкой операторов, если хочется "работы по индексам". |
14.10.2017, 09:11 | #10 |
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
|
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Утечка памяти [Освобождение памяти массива] | denis76560 | Общие вопросы Delphi | 4 | 27.11.2016 18:20 |
Объявление динамического двумерного массива | kineziz | Общие вопросы C/C++ | 4 | 27.05.2012 15:40 |
Освобождение памяти под динамический массив | tsar_ | Общие вопросы Delphi | 7 | 24.12.2011 00:37 |
Матрица из двумерного динамического массива. | Abrokadawr | Фриланс | 5 | 03.11.2011 22:28 |
Освобождение динамического массива? | VintProg | Общие вопросы Delphi | 15 | 28.08.2009 10:41 |