gpt4 book ai didi

c++ - 如何检查内存分配是否仍然有效?

转载 作者:行者123 更新时间:2023-11-28 00:43:57 26 4
gpt4 key购买 nike

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

最佳答案

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

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

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

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

看看the documentation获取更多信息。

关于c++ - 如何检查内存分配是否仍然有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17329720/

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