[英]How to check whether a memory allocation is still valid?
我的c ++程序中有一些共享的指针。 在为指针分配了内存(使用new)之后,我在程序中做了一些工作,然后我需要知道其他一些模块是否删除了这些指针。 因为如果删除了一个指针,那么我将收到访问冲突读取错误。 有什么功能或任何方法可以检查出来吗?
我猜想当您说“共享指针”时,您不是在指实际的智能指针类,如std::shared_ptr
或boost:shared_ptr
,而只是指向从函数传递到函数的原始指针。
没有可靠,安全和跨平台的方法来确定原始指针的有效性。
但是,使用智能指针类将减轻管理动态内存的许多负担。 无需传递原始指针,而是传递智能指针。 这些智能指针(至少shared_
)是引用计数的。 只要仍然存在至少一个对指针的引用,指向的对象就不会被delete
。 删除最后一个引用后,将自动delete
对象d。
我上面引用的smart_ptr
对受控对象具有所谓的“强引用”。 还有一些智能指针,它们对受控对象的引用微弱。 这些弱指针不会阻止对象被删除,可以在使用受控对象之前检查其有效性。
请查看文档以获取更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.