我想知道是否有可能在C中捕获这样的
错误:
object* p = new object;
delete p;
delete p; // This would cause an error,can I catch this?
>我可以检查指针是否有效?
>我可以抓住一些例外吗?
我知道我可以在第一个对象删除后将指针p设置为NULL.但只是想象你不会这样做.
我不认为你可以抓住这种
错误,因为我认为结果是未定义的行为.它可能什么都不做,它可能会崩溃,它可能只是损坏内存,并导致一个问题在后面的一行.
如果您发现它使用当前的编译器执行某些特定操作,那么可以尝试并处理这些编译器,但它可能会在调试和释放中执行不同的操作,并且在升级编译器版本时会再次出现.
建议将指针设置为null,但我认为您最好使用智能指针,而不是删除它们.