Sim*_*mon 9 c++ pointers memory-management
我想知道是否有可能在C++中捕获这样的错误:
object* p = new object;
delete p;
delete p; // This would cause an error, can I catch this?
Run Code Online (Sandbox Code Playgroud)
我知道我可以将指针设置p到NULL第一个对象删除后.但想象一下你不会这样做.
Dav*_*kes 10
我不认为你能抓住这种错误,因为我认为结果是未定义的行为.它可能什么都不做,它可能会崩溃,它可能只是破坏内存并导致后续问题.
如果您发现它对您当前的编译器执行了特定的操作,您可以尝试处理它,但它可能在调试和发布中执行不同的操作,并在升级编译器版本时再次不同.
建议将指针设置为null,但我认为最好不要使用智能指针而不删除它们.