0 / 0 / 0
Регистрация: 09.04.2016
Сообщений: 2
|
|
1 | |
Как и когда правильно освобождать динамически выделенную память?09.04.2016, 21:54. Показов 3055. Ответов 5
Метки нет Все метки)
(
Доброго времени суток!
Задалась вопросом, заданным в заголовке темы "Как и когда правильно освобождать динамически выделенную память?". Например, при выделении памяти в функции. Если я создала динамический массив и мне надо его вернуть, то память сама освободится, после завершения функции. А если я создала в этой же функции еще один динамический массив, нужно ли освобождать эту память перед возвратом из функции? Если можете, подскажите, где можно конкретно про это почитать подробнее.
0
|
|
09.04.2016, 21:54 | |
Ответы с готовыми решениями:
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 |
Возвращаешь из функции указатель на нее и удаляешь, когда она тебе не нужна.
0
|
2777 / 1930 / 570
Регистрация: 05.06.2014
Сообщений: 5,594
|
|
10.04.2016, 23:33 | 6 |
По завершении функции освобождается только память выделенная под ее переменные. int*array=new int[1234] это не массив, а указатель на массив. Сам же массив существует не в функции, а глобально. Соответственно, указатель прибьется, а массив будет жить долго и счастливо.
Через delete и удалять. Ему абсолютно наплевать где был вызван парный new.
0
|
10.04.2016, 23:33 | |
10.04.2016, 23:33 | |
Помогаю со студенческими работами здесь
6
Запись в динамически выделенную память Не могу удалить динамически выделенную память под массив Как правильно удалять выделенную память под указатель на указатель? Как правильно освобождать мютексы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |