繁体   English   中英

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

[英]How to check whether a memory allocation is still valid?

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

我猜想当您说“共享指针”时,您不是在指实际的智能指针类,如std::shared_ptrboost:shared_ptr ,而只是指向从函数传递到函数的原始指针。

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM