Cal*_*ius 6 c++ windows gdb memory-management mingw
我写了自己的引用计数内存管理器c ++(为了好玩),我确信它并不完美;).现在,当我尝试使用它时,我得到了随机的SIGTRAP信号.如果我注释掉与该内存管理器相关的每一行,一切运行正常.获取SIGTRAP-s而不是SIGSEGV非常奇怪.我知道当程序遇到断点时抛出SIGTRAP-s,但没有设置断点.我在另一个线程中读到,调试exe和dll的构建必须是最新的.它们是最新的,所以这不是原因.
有谁知道为什么会这样?
在Google上搜索后,我意识到这些信号带与您在MSVC ++中得到的警告相同:“ Windows在xxxx.exe中触发了一个断点。这可能是由于堆损坏而引起的,它指示错误等等”。
所以看来是的,意外的信号提示可能表明内存损坏(非常奇怪...)
而且我也发现了我的错误。MM位于链接到dll的静态库中。该静态库和dll链接到我的exe。因此,有两个内存管理器,一个在我的exe中,一个在我的dll中。如果调用MM的初始化方法。它在我的exe中初始化了MM,但没有在dll中初始化它,因此dll没有初始化。我通过不将exe与该静态库链接来解决了该问题。
归档时间: |
|
查看次数: |
5899 次 |
最近记录: |