Как освободить структуру динамического размера

Возможный дубликат:
удалить [] массив объектов

Память распределяется следующим образом:

struct foo {
int size;
int * arr;
};

(*structA).arr = new int[(*structA).size];

Как освободить его?

0

Решение

Выделенная память будет удалена при вызове

delete[] (*structA).arr;

Что касается вашей структуры, это зависит от того, разместили ли вы ее структуру в куче или в стеке.

3

Другие решения

Все, что вы выделяете new[] должен быть удален с delete[]:

structA->arr = new int[structA->size];
...
delete[] structA->arr;

В этом конкретном примере было бы лучше использовать std::vector вместо. Пусть он обрабатывает выделение и освобождение памяти для вас. Вы можете использовать его size() Метод определения количества предметов, которые он держит:

struct foo {
std::vector<int> arr;
};

structA->arr.resize(some value here);
...
int size = structA->arr.size();
4

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector