Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/41: Рейтинг темы: голосов - 41, средняя оценка - 4.54
 Аватар для no_wearines
56 / 52 / 21
Регистрация: 01.01.2012
Сообщений: 347

Освобождение памяти, выделенной под массив

07.08.2012, 20:36. Показов 8566. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Выделяю память под массив:

C++
1
int (*array_1)[5] = new int[5][5];
как освободить то, что выделил?

И еще вопрос: как указателю **ptr_1 присвоить адрес указателя array_1
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.08.2012, 20:36
Ответы с готовыми решениями:

Косвенное обращение к методам. Освобождение памяти,выделенной под двумерный динамический массив
Вопрос 1. В задании необходимо проиллюстрировать косвенный способ обращения к методам. Искал в интернете. Нашел : Array *s, obj(n,...

Массив: Освобождение выделенной памяти
Сказали переделать код, нужно что бы память освобождалась не в отдельной функции а как то по другому так и не понял как. #include...

Освобождение памяти, выделенной на динамический массив структур
Есть динамический массив структур. Как я понимаю, delete A не производит полной очистки памяти в данном случае, потому нужно использовать...

7
 Аватар для DaskOFF
113 / 113 / 42
Регистрация: 02.05.2012
Сообщений: 524
Записей в блоге: 1
07.08.2012, 20:47
delete[] *array_1;
?
0
 Аватар для no_wearines
56 / 52 / 21
Регистрация: 01.01.2012
Сообщений: 347
07.08.2012, 21:15  [ТС]
освободив память, заново отобразил содержимое массива.

Первые два значения вышли адресами, а остальные не изменились. так память освободилась или нет?
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
07.08.2012, 21:18
Цитата Сообщение от no_wearines Посмотреть сообщение
Первые два значения вышли адресами, а остальные не изменились. так память освободилась или нет?
память освободилось в том смысле, что менеджер heap'а (кучи, динамической памяти) теперь может при следующем new выдать этот кусок памяти кому-нибудь другому
не обязательно, что эта память будет отдана ОС или сразу же кем-нибудь переиспользована
0
 Аватар для no_wearines
56 / 52 / 21
Регистрация: 01.01.2012
Сообщений: 347
07.08.2012, 21:28  [ТС]
Если не затруднит, объясните более подробно, а то я темню
0
Каратель
Эксперт С++
6610 / 4029 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
07.08.2012, 21:35
Цитата Сообщение от no_wearines Посмотреть сообщение
Выделяю память под массив:
C++
1
int (*array_1)[5] = new int[5][5];
как освободить то, что выделил?
C++
1
delete [] array_1;
1
 Аватар для Borkot
4 / 4 / 2
Регистрация: 05.05.2012
Сообщений: 201
Записей в блоге: 1
11.08.2012, 14:42
Я спрашивал тут на форуме,Мне сказали,что память освобождается:delete [] .... если была new ...[],free() если была realloc/calloc.Спросив то же самое у преподователя по С++.Он сказал,что при вызове free()-подразумевается delete[].Что вроде как макрос.То есть без разницы использовать free() || delete[].Вот я и стаю на перепутье.Как же правильнее?
0
Модератор
Эксперт по электронике
8981 / 6748 / 921
Регистрация: 14.02.2011
Сообщений: 23,869
11.08.2012, 15:15
Цитата Сообщение от Borkot Посмотреть сообщение
.Спросив то же самое у преподователя по С++.Он сказал,что при вызове free()-подразумевается delete[].
Выгнать преподавателя
Да чаще всего delete реализовано через free, но никто не обещал что так и будет
delete вызывает деструкторы
free нет

Добавлено через 26 минут
покажи своему преподу вот этот код
разница между new/delete и malloc/free

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
class MyClass
{
public:
    MyClass(){std::cout<<"Constructor"<<this<<std::endl;}
    ~MyClass(){std::cout<<"Destructor"<<this<<std::endl;}
};
int main()
{
    std::cout<<"new"<<std::endl;
    MyClass* cl1=( MyClass*)new MyClass[5];
    std::cout<<"malloc"<<std::endl;
    MyClass* cl2=(MyClass*)malloc(5*sizeof(MyClass));
    std::cout<<"free"<<std::endl;
    free(cl2);
    std::cout<<"delete"<<std::endl;
    delete[]cl1;
    system("PAUSE");
    return 0;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.08.2012, 15:15
Помогаю со студенческими работами здесь

Освобождение выделенной памяти
Здравствуйте! Есть структура, выглядит, например, так: struct some_structure { int* s; } *a = new some_structure; ...

Освобождение памяти, выделенного под динамический массив
Нужно освободить участок памяти, выделенный под динамический массив при помощи функции. Однако вылазит ошибка segmentation fault. В чем...

Корректно ли освобождение выделенной памяти?
Извиняюсь, если такой вопрос уже звучал. Допустим есть такой кусок кода: struct A { int *x; } *b; void main() { b = new A;...

Освобождение памяти, выделенной через new
Я прочитал, что память динамически для строки, можно выделить к примеру узнать длину строки strlen(tex) и нужно добавить единицу для...

Размер памяти, выделенной под массив записей
Здравствуйте, дорогие форумчане! Сейчас выполняю лабораторную работу по C++ с оценкой эффективности алгоритмов и застрял на одном...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru