Судя по опубликованному вами коду, проблема заключается в отсутствующем конструкторе копирования. Рассмотрим следующий код:
stack mouse_position;
// fill mouse_position
print_stack(mouse_position);
Когда вы звоните print_stack
, вы делаете побитовую копию mouse_position
. Когда выходит print_stack
, эта копия (а именно m
) уничтожается, вызывая delete на своем элементе top
, который точно такой же top
из mouse_position
. Когда mouse_position
удаляется, вы удаляете его top
дважды.
Опять же, в коде, который вы еще не опубликовали, может быть больше ошибок.