C++ 如何检测指针中存储的对象是否被删除?
我在一个模块(我们称之为模块a)中有指针来存储我想要访问的所有对象(在模块B中)。它很好用 为这些对象添加动态创建/删除功能时(在模块B中)。创建是好的,而删除则会导致我的指针不再有效的问题 有没有简单的方法来检查指针指向的对象是否仍然有效?(我可以考虑在模块B中的对象析构函数中添加函数来通知模块A进行更新,但这并不容易)不。您必须以某种方式管理对象的生存期 幸运的是,C++标准库提供了这样做的工具:使用指针>可以共享对象的指针和“代码> STD::SytDypPTR < /Cord>::弱指针PTR 指针指向指向共享指针管理但不参与共享方案的指针。” (另外,在适当的时候使用C++ 如何检测指针中存储的对象是否被删除?,c++,C++,我在一个模块(我们称之为模块a)中有指针来存储我想要访问的所有对象(在模块B中)。它很好用 为这些对象添加动态创建/删除功能时(在模块B中)。创建是好的,而删除则会导致我的指针不再有效的问题 有没有简单的方法来检查指针指向的对象是否仍然有效?(我可以考虑在模块B中的对象析构函数中添加函数来通知模块A进行更新,但这并不容易)不。您必须以某种方式管理对象的生存期 幸运的是,C++标准库提供了这样做的工具:使用指针>可以共享对象的指针和“代码> STD::SytDypPTR < /Cord>::弱指针
std::unique\u ptr
)否。您必须以某种方式管理对象的生存期
幸运的是,C++标准库提供了这样做的工具:使用指针>可以共享对象的指针和“代码> STD::SytDypPTR < /Cord>::弱指针PTR 指针指向指向共享指针管理但不参与共享方案的指针。”
(也可以在适当的时候使用
std::unique_ptr否,通常无法测试(原始)指针是否指向有效对象
只有当指针的值为null时,才能确定指针没有指向有效对象。因此,如果删除指向的对象后始终将指针设置为null,则可以通过测试null来检查有效性。当然,如果复制指针,这很快就会变得难以忍受
使用智能指针更容易保证有效性。仅由shared_ptr
或仅由unique_ptr
指向的对象将永远不会被删除,只要您指向它。除非对象很傻并调用删除此
否,否则通常无法测试(原始)指针是否指向有效对象
只有当指针的值为null时,才能确定指针没有指向有效对象。因此,如果删除指向的对象后始终将指针设置为null,则可以通过测试null来检查有效性。当然,如果复制指针,这很快就会变得难以忍受
使用智能指针更容易保证有效性。仅由shared_ptr
或仅由unique_ptr
指向的对象将永远不会被删除,只要您指向它。除非该对象很傻,并调用删除此