gpt4 book ai didi

C++ 删除具有有效地址的指针

转载 作者:太空狗 更新时间:2023-10-29 19:49:43 26 4
gpt4 key购买 nike

我正在使用 Poco C++ 库并导致奇怪的问题。Poco 使用自己的共享指针类 SharedPtr 进行内部指针操作。在我的案例中,静态对象 Poco::SSLManager 具有证书处理程序对象的 SharedPtr 成员。当程序运行结束时,静态对象被删除并且我捕获了段错误。使用 GDB 调试器我看到核心转储但不明白问题。删除SharedPtr对象时出现段错误(简单操作:delete pObj),但对象有有效地址,如-0x8fcbed8

为什么删除具有有效地址的指针会导致段错误?
可能是因为对象在应用程序的 fork 拷贝中创建并在 main 中销毁?

最佳答案

有效地址只是一个可访问的地址。这并不意味着它适合删除。您可以 删除new 返回的内容。如果你没有新建它,你就不能删除它。删除静态或自动对象是未定义的行为 - 以及您可能从 new 之外的任何其他来源获得的行为。

关于C++ 删除具有有效地址的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6981271/

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