我试图了解堆一致性检查在GNU C库中的工作原理。 我提到了http://www.gnu.org/software/libc/manual/html_node/Heap-Consistency-Checking.html#Heap-Consistency-Checking
这是我编写的示例程序。我按照手册中的建议,如果我在gdb中运行并调用mcheck(0),我的自定义abortfn将被调用。但它没有被召唤。 我在这里错过了什么? 谢谢:))
#include<stdio.h>
#include<stdlib.h>
#include<mcheck.h>
void *abortfn(enum mcheck_status status)
{
switch(status) {
case MCHECK_DISABLED:
printf("MEMCHECK DISABLED\n");
break;
default:
printf("MEMCHECK ENABLED\n");
}
}
int main()
{
printf("This is mcheck testing code\n");
int *a = (int *) malloc(sizeof(int));
*a = 10;
printf("A: %d\n", *a);
free(a);
return 0;
}