gpt4 book ai didi

c++ - 获取随机 SIGTRAP 信号(在 MinGW-gdb 中)是否是内存损坏的标志?

转载 作者:可可西里 更新时间:2023-11-01 13:25:53 24 4
gpt4 key购买 nike

我编写了自己的引用计数内存管理器 C++(为了好玩),我确信它并不完美;)。现在,当我尝试使用它时,我收到了随机的 SIGTRAP 信号。如果我注释掉与该内存管理器相关的每一行,一切都运行良好。获取 SIGTRAP-s 而不是 SIGSEGV 是很奇怪的。我知道当程序遇到断点时会抛出 SIGTRAP-s,但没有设置断点。我在另一个线程中读到,exe 和 dll 的调试版本必须是最新的。它们是最新的,所以这不是原因。

有人知道为什么会这样吗?

最佳答案

在 Google 上搜索后,我意识到这些信号陷阱与您在 MSVC++ 中收到的警告相同,提示“Windows 已在 xxxx.exe 中触发了一个断点。这可能是由于堆损坏,并指示一个 bug blahblahblah” ...

所以看起来是的,意想不到的 sigtraps 可以指示内存损坏(很奇怪......)

我也发现了我的错误。 MM 位于链接到 dll 的静态库中。那个静态库和 dll 链接到我的 exe。所以有两个内存管理器,一个在我的 exe 中,一个在我的 dll 中。如果调用MM的初始化方法。它在我的 exe 中初始化了 MM,但没有在 dll 中初始化,因此 dll 没有初始化。我通过不将我的 exe 链接到该静态库来解决这个问题。

关于c++ - 获取随机 SIGTRAP 信号(在 MinGW-gdb 中)是否是内存损坏的标志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2307621/

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