为了确保实现的数据结构在功能上是合理的,我使用mcheck
编写了一个测试文件,以确保我在分配的内存范围内工作。但是,当尝试在字符串文字上使用mprobe()
(并在开始时调用mcheck(NULL)
)时,程序始终会以MCHECK_HEAD
中止。
我尝试了我能想到的最小的程序:
#include <mcheck.h> #include <stdio.h> int main() { mcheck(NULL); mprobe("test"); exit(0); }
结果如下:
$ gcc test.c -lmcheck $ ./a.out memory clobbered before allocated block Aborted (core dumped)
因此,当mcheck遇到字符串文字时,它会失败,以为先前的内存已被修改。为什么?是因为未明确
malloc
字符串吗?
为了确保实现的数据结构在功能上是合理的,我使用mcheck编写了一个测试文件,以确保我在分配的内存范围内工作。但是...
enum mcheck_status mprobe(void *ptr);