为什么在检查字符串文字时mprobe失败?

问题描述 投票:0回答:1

为了确保实现的数据结构在功能上是合理的,我使用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编写了一个测试文件,以确保我在分配的内存范围内工作。但是...

c gcc memory-management heap-memory
1个回答
4
投票
enum mcheck_status mprobe(void *ptr);
© www.soinside.com 2019 - 2024. All rights reserved.