0

我的 C++ 程序中有一些共享指针。在为指针分配内存(使用 new)后,我在程序中做了一些事情,然后我需要知道其他模块是否删除了这些指针。因为如果指针已被删除,那么我会收到访问冲突读取错误。有什么功能或方法可以检查吗?

4

1 回答 1

3

我猜当您说“共享指针”时,您指的不是像std::shared_ptror这样的实际智能指针类boost:shared_ptr,而只是从函数传递到函数的原始指针。

没有可靠、安全和跨平台的方法来确定原始指针的有效性。

但是,使用智能指针类将减轻管理动态内存的大部分负担。不是传递原始指针,而是传递智能指针。这些智能指针(至少是shared_品种)是引用计数的。只要对指针的至少一个引用仍然存在,被指向的对象就不会是deleted。一旦最后一个引用被删除,该对象将自动deleted。

上面的smart_ptrI 引用对受控对象有一个所谓的“强引用”。还有智能指针维护对受控对象的弱引用。这些弱指针不会阻止对象被删除,并且可以在使用受控对象之前检查其有效性。

查看文档以获取更多信息。

于 2013-06-26T20:34:40.233 回答