Red*_*ddy 3 c++ fork memory-management poco shared-ptr
我正在使用Poco C++库并导致奇怪的问题.Poco使用自己的共享指针类SharedPtr进行内部指针操作.在我的情况下,静态对象Poco::SSLManager具有SharedPtr证书Handlers对象的成员.当程序运行结束时,静态对象被删除,我抓住了分段错误.使用GDB调试器,我看到核心转储,不明白问题.删除SharedPtr对象时发生Seg错误(简单操作:) delete pObj,但对象具有有效地址,例如 - 0x8fcbed8.
为什么删除带有效地址的指针会导致分段错误?
这可能是因为对象在应用程序的fork副本中创建并在main中销毁?
Pup*_*ppy 11
有效地址只是一个可访问的地址.这并不意味着它适合删除.你只能 delete从你那里得到的东西new.如果你没有new,那就delete不行了.删除静态或自动对象是未定义的行为 - 以及除了之外的任何其他来源可能获得的行为new.
| 归档时间: |
|
| 查看次数: |
1005 次 |
| 最近记录: |