C++ 从内存中删除对象
我的公司使用这段代码从内存中删除所有对象。C++ 从内存中删除对象,c++,C++,我的公司使用这段代码从内存中删除所有对象。 但是由于捕获(…)的原因,我想知道如果该对象的析构函数失败(AV)会发生什么?安静地捕捉一切可以吗?如果析构函数失败了,我们不想知道这件事吗 #define DELNULL(p) \ { \ if (p) \ { \ try \ {delete p;} \ catch (...) \ {}
但是由于捕获(…)的原因,我想知道如果该对象的析构函数失败(AV)会发生什么?安静地捕捉一切可以吗?如果析构函数失败了,我们不想知道这件事吗
#define DELNULL(p) \
{ \
if (p) \
{ \
try \
{delete p;} \
catch (...) \
{} \
p = NULL; \
} \
} \
安静地捕捉一切可以吗
通常情况下,无声地捕捉所有内容并不合适(无声地捕捉任何内容很少合适)。了解错误通常是有用的
在某些情况下,最好不要让异常传播。例如,如果我们在一个从C调用的函数中,或者如果我们不想终止,并且在析构函数中或者在一个noexcept
函数中。但是,最好还是采用其他形式的错误报告,而不是默默地接受它们
注意:如果(p)检查是多余的,可以安全地删除。AFAIK,。允许删除空指针,不需要测试它。你公司使用C++的什么版本?现在我们有了智能指针,甚至不需要再使用这些代码了<代码>新<代码> >代码>删除>代码>在现代C++中没有位置(除了放置新的)。我会通过这样做来改进它:<代码>定义“DelNULL”(p)do{DELPPTR;P= nulLptR;}(false)也不安全:析构函数不应该首先从:@ WeGoToMar如我所说:您的代码不能使它安全。你的应用程序仍可能崩溃。请参阅链接的答案。