我可以在C++中捕获错误的指针错误吗?

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)
  1. 我可以检查指针是否有效吗?
  2. 我能抓到一些例外吗?

我知道我可以将指针设置pNULL第一个对象删除后.但想象一下你不会这样做.

Dav*_*kes 10

我不认为你能抓住这种错误,因为我认为结果是未定义的行为.它可能什么都不做,它可能会崩溃,它可能只是破坏内存并导致后续问题.

如果您发现它对您当前的编译器执行了特定的操作,您可以尝试处理它,但它可能在调试和发布中执行不同的操作,并在升级编译器版本时再次不同.

建议将指针设置为null,但我认为最好不要使用智能指针而不删除它们.