如何检查内存分配是否仍然有效

How to check whether a memory allocation is still valid?

本文关键字:是否 分配 有效 内存 何检查 检查      更新时间:2023-10-16

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

我想,当你说"共享指针"时,你指的不是像std::shared_ptrboost:shared_ptr这样的实际智能指针类,而是从一个函数传递到另一个函数的原始指针。

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

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

上述smart_ptr I参考对受控对象具有所谓的"强参考"。还有智能指针,它保持对受控对象的弱引用。这些弱指针不会阻止对象被删除,并且可以在使用受控对象之前检查其有效性。

查看文档以了解更多信息。