С++ Удалить элементы внутри стека?

Я работаю над основным текстовым редактором, и у меня есть 2 stacks именем undo_stack и redo_stack. Когда пользователь выходит, я хочу удалить каждый элемент (указатель) в каждом стеке. Я пробовал до сих пор...

Стек содержит командные (пользовательские команды) указатели.

while (!undo_stack.empty())
{ delete undo_stack.top(); undo_stack.pop();
}
while (!redo_stack.empty())
{ delete redo_stack.top(); redo_stack.pop();
}

Это верно? Кажется, это работает иногда для меня, что заставляет меня задаться вопросом, является ли ошибка в моем коде или в очистке моего стека. спасибо

1 ответ

Предполагая, что вы не работаете в многопоточной среде, ваш код для очистки стека и удаления указателей, нажатых на него, кажется ОК. Без дополнительного кода и вывода трудно понять, почему он иногда работает, а иногда нет, но я бы заподозрил одно из следующего:

  1. Необработанный указатель, который вы пытаетесь удалить, уже удален.
  2. Некоторая сбой происходит внутри деструктора вашего объекта, который не имеет отношения к стеку per se.

Вы можете попробовать запустить его через отладчик и приложить трассировку стека.

licensed under cc by-sa 3.0 with attribution.