Я новичок в C++
и реализованы следующие struct
:Освобождает память указателя на структуру
struct Person {
String name;
int age;
};
Теперь я создаю новый объект:
Person *p = new Person();
p->name = "name";
p->age = 211;
и push
его на stack
:
stack.push(*p);
У меня есть while(!stack.empty())
, и там я обрабатываю каждый элемент, который я вставлял в стек.
Теперь, где я могу освободить память? В while
-loop я сделать следующее:
Person *current = &stack.front();
stack.pop();
// do stuff
delete current;
К сожалению, delete current
заявление бросает своего рода исключение.
Что делать неправильно? Спасибо за вашу помощь.
Используйте 'std :: uniqur_ptr' или' std :: shared_ptr', и он будет удален для вас автоматически. –
@CaptainObvlious Не большой совет, если нет причин для динамического распределения. – juanchopanza
Вы нажимаете значения в контейнере 'stack', но затем угрожаете им как указатели на объекты из кучи. Затем попытка удалить объект из стека программы (не путать с контейнером 'stack') приводит к сбою программы. –