0

我正在调试进程崩溃,并且回溯看起来像下面这样。该过程在代码中的不同点崩溃,但所有时间回溯都归结为malloc。

我尝试将堆从 128 M 增加到 256 M,但这也无济于事。核心转储的大小约为 164 M,并且在运行过程中使用大约相同的 virt 内存。

你们能指出我正确的方向吗?感谢帮助。

#0
#1
#2
#5  0xb7fc7966 in malloc (size=141858520)
.
.
.
#16 0x0805ef69 in main (argc=1, argv=0xbffffa64)
.

bt 2:这是我得到的第二个回溯。相同的进程,但在代码中的不同点崩溃。

#0
#1
#2
#5  0xb7fc7677 in realloc (p=0xe01fd8, size=139629112)
.
.
.
#18 0x0805ef69 in main (argc=1, argv=0xbffffa64)
4

1 回答 1

1

内部的任何崩溃malloc几乎都是堆损坏的保证标志。

在 Linux 上,查找此类堆损坏工具是ValgrindAddress Sanitizer

请参阅此页面以了解两者之间的差异。

于 2013-05-14T00:24:24.330 回答