В C ++ можно смело предполагать, что освобождение никогда не завершится неудачей. Деструкторы не должны выбрасывать исключения, и реальная зарезервированная память никогда не должна освобождаться, поэтому, учитывая эти два момента, ничто не может пойти не так.
Однако, если вы удалите указатель, который уже был удален, ваша программа, вероятно, вылетит. Это не проблема с самим освобождением - оригинальный delete
работал успешно. Это проблема с управлением памятью вашей программы, если она пытается удалить указатель дважды, но это редко требуется для современных STL и интеллектуальных указателей, таких как std::vector
, std::unique_ptr
и т. Д.