![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 03.03.2013
Сообщений: 102
|
![]()
Здравствуйте, товарищи-программисты и просто любители программировать на с++ (я, например, скорее к последним отношусь)!
Проблему ярко характеризует заголовок, тема и описывают комментарии в коде. Должно быть, у меня какая-то очень тупая ошибка, даже заранее стыдно, но я не могу освободить память... Код, представленный ниже, я хотел использовать в качестве тестирующей обёртки для решения определённой задачи. Код:
Последний раз редактировалось Haric_110; 13.10.2017 в 15:55. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 03.03.2013
Сообщений: 102
|
![]()
Эх, видать, ошибка не так очевидна...
|
![]() |
![]() |
![]() |
#3 | |
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
|
![]()
Для начала:
Код:
Цитата:
![]() Последний раз редактировалось Croessmah; 14.10.2017 в 01:41. |
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
![]()
Двумерный массив - это массив указателей на указатели.
Код:
Код:
Но такое делают достаточно редко, чаще выделяют 1-мерный массив размера m * n, и работают типа *(string + i *n +j) через арифметику указателей. В таком варианте, память под данные будет в непрерывном блоке, можно его копировать через memcpy и т.д. Последний раз редактировалось alexzk; 14.10.2017 в 08:03. |
![]() |
![]() |
![]() |
#5 |
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
|
![]() |
![]() |
![]() |
![]() |
#6 | |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
![]() Цитата:
Здесь сделали массив указателей: strings = new char *[m]; Здесь первому из указателей в массиве присвоили память m *n *strings = new char[m * n]; А на кой черт остальные указатели в массиве m-1 чтука. |
|
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
![]() |
![]() |
![]() |
![]() |
#8 |
Вредный кошак
Участник клуба
Регистрация: 14.10.2012
Сообщений: 1,159
|
![]()
Следом эти указатели "настраиваются" на свои "измерения".
Таким образом мы сохраняем возможность обращения по индексам. Без имени.png |
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
![]()
Чепуха какая-то времен С.
Плохо, что ее в программу на С++ тащат. По-моему, или делай одномерный массив с арифметикой указателей, или делай класс, с перегрузкой операторов, если хочется "работы по индексам". |
![]() |
![]() |
![]() |
#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 |