Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
colya
0 / 0 / 0
Регистрация: 04.02.2013
Сообщений: 12
#1

Освобождение памяти delete - C++

06.02.2013, 16:30. Просмотров 342. Ответов 3
Метки нет (Все метки)

Если у меня есть указатель (pt) N-ой степени, я присвоил ему указатель на начало массива (N - 1)ой степени (через new), затем некоторому элементу массива присвоил новый указатель на начало массива и т.д.

Короче, когда я напишу delete pt освободится вся эта иерархия или только самый первый массив?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.02.2013, 16:30     Освобождение памяти delete
Посмотрите здесь:

Объясните правила работы с delete с указателями и массивами (корректное освобождение выделенной памяти) - C++
Указатель содержал ссылку на динамический массив. Массив удалил. Имеет ли смысл применять delete на указатель?

с++ Освобождение памяти - C++
Здравствуйте, объявляю в классе: А ** а; Далее выделяю память в функции: а=0; a = new A*; for(uint i=0;i<5;++i) { a =...

Освобождение памяти и фишки VS - C++
1) Откуда delete знает, сколько элементов в массиве, ведь обычный sizeof(a), где a - (допустим) int* - ничего не даст? Если "он" это знает,...

Выделение-освобождение памяти - C++
Добрый день. Написал заготовку под программу. Возник вопрос: правильно ли выделяю-освобождаю память? Программа работает корректно, но...

выделение и освобождение памяти - C++
В моей программе есть следующий код: char* lexems; // массив указателей на символ char* lexem; // вспомогательная...

Правильное освобождение памяти - C++
Есть код class Test { public: int **container; int counter = 0; Test(unsigned int size) { container = new int*;

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Пёс
228 / 76 / 4
Регистрация: 03.02.2013
Сообщений: 311
06.02.2013, 16:43     Освобождение памяти delete #2
Цитата Сообщение от colya Посмотреть сообщение
Если у меня есть указатель (pt) N-ой степени, я присвоил ему указатель на начало массива (N - 1)ой степени (через new), затем некоторому элементу массива присвоил новый указатель на начало массива и т.д.

Короче, когда я напишу delete pt освободится вся эта иерархия или только самый первый массив?
Честно говоря нифига не понял.... Я лучше покажу вам на примере двухмерного
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void main()
{
     const int N = 8;
     int** ppInt = new int* arr[N];
 
     for(int i=0;i<N; i++)
          arr[i] = new int[N];
 
     for(int i=0; i<N;i++)
          delete[] arr[i];
     delete[] arr;
 
}
И точно можно сказать ещё об одном.... внутренние массивы сами себя не удалят.
colya
0 / 0 / 0
Регистрация: 04.02.2013
Сообщений: 12
06.02.2013, 16:52  [ТС]     Освобождение памяти delete #3
И точно можно сказать ещё об одном.... внутренние массивы сами себя не удалят.

Ага, спасибо
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.02.2013, 17:43     Освобождение памяти delete
Еще ссылки по теме:

Полиморфизм и освобождение памяти - C++
class A{ // базовый класс ... }; class B : public A{ // унаследованный от класса A ... }; далее в программе: B...

Освобождение памяти в классах - C++
Программа работает правильно но при завершении выдает ошибку! Ошибка на деструкторе! Пожалуйста объясните почему! Спасибо! #ifndef...

Массив, освобождение памяти - C++
что я сделал не так? #include &quot;stdafx.h&quot; #include &lt;conio.h&gt; #include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;iostream&gt; ...

Освобождение памяти в списках - C++
#pragma once class Node { public: int value; Node * next; Node(int data); ~Node(); };


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

Или воспользуйтесь поиском по форуму:
Vlad Coder
Сообщений: n/a
06.02.2013, 17:43     Освобождение памяти delete #4
Цитата Сообщение от colya Посмотреть сообщение
Короче, когда я напишу delete pt освободится вся эта иерархия или только самый первый массив?
освободится то, на что указывает указатель
Yandex
Объявления
06.02.2013, 17:43     Освобождение памяти delete
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru