Возможный дубликат:
удалить [] массив объектов
Память распределяется следующим образом:
struct foo {
int size;
int * arr;
};
(*structA).arr = new int[(*structA).size];
Как освободить его?
Выделенная память будет удалена при вызове
delete[] (*structA).arr;
Что касается вашей структуры, это зависит от того, разместили ли вы ее структуру в куче или в стеке.
Все, что вы выделяете 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();