gpt4 book ai didi

c++ - 从内存中删除对象

转载 作者:太空狗 更新时间:2023-10-29 22:53:57 25 4
gpt4 key购买 nike

我的公司使用这段代码从内存中删除所有对象。
但是因为 catch(...) 我想知道如果那个对象的析构函数失败会发生什么 (AV)?默默地捕获一切就可以了吗?如果析构函数失败,我们不想知道吗?

#define DELNULL(p) \
{ \
if (p) \
{ \
try \
{delete p;} \
catch (...) \
{} \
p = NULL; \
} \
} \

最佳答案

Is it ok to catch everything silently?

默默地捕获一切通常是不可行的(默默地捕获任何东西是很少见的)。了解错误通常很有用。

某些情况下,最好不要让异常传播。例如,如果我们在从 C 调用的函数中,或者如果我们不想终止,并且在析构函数或 noexcept 函数中。但是,最好退回到某种其他形式的错误报告,而不是静静地吞下它们。

附言if (p) 检查是多余的,可以安全地删除。

关于c++ - 从内存中删除对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58080961/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com