0 / 0 / 0
Регистрация: 09.04.2016
Сообщений: 2
1

Как и когда правильно освобождать динамически выделенную память?

09.04.2016, 21:54. Показов 3055. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!

Задалась вопросом, заданным в заголовке темы "Как и когда правильно освобождать динамически выделенную память?".

Например, при выделении памяти в функции. Если я создала динамический массив и мне надо его вернуть, то память сама освободится, после завершения функции. А если я создала в этой же функции еще один динамический массив, нужно ли освобождать эту память перед возвратом из функции?

Если можете, подскажите, где можно конкретно про это почитать подробнее.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.04.2016, 21:54
Ответы с готовыми решениями:

Как правильно освобождать память
Подскажите пожалуйста ,где память чистить в таком случае?Или как это правильно сделать. char...

Как правильно освобождать память от вектора?
ПОжалуйста если можно пример для одномерного и двумерного. циклом или метод есть какой то?

Как правильно освобождать память в динамических структурах
Использую деструктор для освобождения памяти от указателя на начало списка. struct Node { int...

Удалить динамически выделенную память
Получится ли освободить динамически выделенную память в интерфейсе одного класса, в интерфейсе...

5
7653 / 6457 / 2945
Регистрация: 14.04.2014
Сообщений: 28,153
09.04.2016, 21:55 2
Если память через new выделена, то сама освободиться не может никак, должен быть delete.
0
0 / 0 / 0
Регистрация: 09.04.2016
Сообщений: 2
10.04.2016, 22:44  [ТС] 3
А как же тогда удалять память, выделенную в функции, которую нужно из этой же функции вернуть?
0
7653 / 6457 / 2945
Регистрация: 14.04.2014
Сообщений: 28,153
10.04.2016, 22:50 4
Удалишь в вызывающей функции. Важно, чтобы она хоть где-то удалялась, когда уже не нужна.
0
31 / 31 / 23
Регистрация: 23.03.2015
Сообщений: 210
10.04.2016, 22:53 5
Цитата Сообщение от mydecember Посмотреть сообщение
А как же тогда удалять память, выделенную в функции, которую нужно из этой же функции вернуть?
Возвращаешь из функции указатель на нее и удаляешь, когда она тебе не нужна.
0
2777 / 1930 / 570
Регистрация: 05.06.2014
Сообщений: 5,594
10.04.2016, 23:33 6
Цитата Сообщение от mydecember Посмотреть сообщение
Например, при выделении памяти в функции. Если я создала динамический массив и мне надо его вернуть, то память сама освободится, после завершения функции.
По завершении функции освобождается только память выделенная под ее переменные. int*array=new int[1234] это не массив, а указатель на массив. Сам же массив существует не в функции, а глобально. Соответственно, указатель прибьется, а массив будет жить долго и счастливо.
Цитата Сообщение от mydecember Посмотреть сообщение
А как же тогда удалять память, выделенную в функции, которую нужно из этой же функции вернуть?
Через delete и удалять. Ему абсолютно наплевать где был вызван парный new.
0
10.04.2016, 23:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.04.2016, 23:33
Помогаю со студенческими работами здесь

Запись в динамически выделенную память
Во общем, в dll выделяется память под char *, через new. Требуется в другой программе в которой я...

Не могу удалить динамически выделенную память под массив
Здравствуйте. Изучил сегодня динамическое выделение памяти и не могу ее удалить. Подскажите где...

Как правильно удалять выделенную память под указатель на указатель?
есть код #include <iostream> #include <conio.h> #include <stdlib.h> #include <time.h> using...

Как правильно освобождать мютексы
Здравствуйте, у меня вопрос, есть разница в том как освобождать мютексы?? пример захватываем...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru