0 / 0 / 0
Регистрация: 17.07.2015
Сообщений: 11
|
|||||||||||
1 | |||||||||||
Не получается освободить память динамического двумерного массива13.09.2015, 11:43. Показов 1627. Ответов 10
Метки нет (Все метки)
Пишу в Visual Studio 2015 Community
Объявляю двумерный динамический массив так:
0
|
13.09.2015, 11:43 | |
Ответы с готовыми решениями:
10
Удаление строки из двумерного динамического массива Освободить память от двумерного динамического массива Как правильно освободить память двумерного массива Не получается освободить память |
0 / 0 / 0
Регистрация: 17.07.2015
Сообщений: 11
|
||||||||||||||||
13.09.2015, 11:53 [ТС] | 2 | |||||||||||||||
Не правильно написал в теме...
Объявляю динамический массив так (иначе пишет что массив неиницализирован)
0
|
18902 / 9860 / 2410
Регистрация: 30.01.2014
Сообщений: 17,305
|
|
14.09.2015, 02:22 | 3 |
1
|
0 / 0 / 0
Регистрация: 17.07.2015
Сообщений: 11
|
|
14.09.2015, 11:12 [ТС] | 4 |
Увы код уже сильно изменил.
После нескольких экспериментов пришел к выводу что освободить память динамического массива можно только в той функции в которой она была выделена (хотя в интернете об этом не нашел упоминаний), переместил освобождение памяти из отдельной функции в конец функции в которой она была выделена и ошибка исчезла. P.s. хотел вынести освобождение в отдельную функцию потому что данные из массива понадобятся позже если пользователь выберет другой пункт меню, по этому пришлось использовать файлы для хранения данных.
0
|
18902 / 9860 / 2410
Регистрация: 30.01.2014
Сообщений: 17,305
|
|
14.09.2015, 14:14 | 5 |
И это также неверный вывод.
Если все-таки есть желание, чтобы научили и подсказали, то лучше выложить проблемный код
1
|
0 / 0 / 0
Регистрация: 17.07.2015
Сообщений: 11
|
||||||
14.09.2015, 18:38 [ТС] | 6 | |||||
Буду очень благодарен если подскажите как исправить проблему
Изначально задумывалось что массив будет один для всех функций но из за того что не получилось так сделать сделал через файлы, сейчас не стал все возвращать обратно, а просто вернул то как у меня было удаление массива и его объявление.
0
|
18902 / 9860 / 2410
Регистрация: 30.01.2014
Сообщений: 17,305
|
||||||||||||||||
14.09.2015, 18:42 | 7 | |||||||||||||||
Сообщение было отмечено tezaurismosis как решение
Решение
Ullr, давай начнем вот с этих исправлений:
Строка 14:
1
|
18902 / 9860 / 2410
Регистрация: 30.01.2014
Сообщений: 17,305
|
|
14.09.2015, 19:00 | 9 |
Ну конечно. Только не массив, а указатель. Здесь важно, чтобы указатель mass в main имел то самое значение, что мы получили в функции read. До этого, у тебя оставалось прежнее значение, а вот удалялся массив уже как будто бы значение новое.
Если по указателю не находятся те данные, которые ждет delete, то мы как раз будем наблюдать спецэффекты, наподобие твоих.
1
|
18902 / 9860 / 2410
Регистрация: 30.01.2014
Сообщений: 17,305
|
||||||
14.09.2015, 19:08 | 11 | |||||
Можно было бы сделать более классически. Функция read возвращала бы указатель на выделенную память. А в функции main просто было бы присвоение.
1
|
14.09.2015, 19:08 | |
14.09.2015, 19:08 | |
Помогаю со студенческими работами здесь
11
Не получается адрес динамического двумерного массива передать, как аргумент функции Почему не получается освободить память, выделенную для переменных в структуре? Как освободить старые ImageVew чтобы освободить память Можно ли освободить память от последней ячейки массива и как? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |