#include <stdio.h>
int main(int argc, char * argv[])
{
const char * src = "mcheck test";
char * ptr = (char *)malloc(sizeof(char) * 32);
memcpy(ptr, src, strlen(src));
ptr[32] = '\0';
printf("*ptr=%s\n", ptr);
free(ptr);
ptr = NULL;
printf("process end\n");
return 0;
}
~/test <root@debian> 11:46:33 $ ./a.out
*ptr=mcheck test
process end
~/test <root@debian> 11:46:34 $ MALLOC_CHECK_=1 ./a.out
*ptr=mcheck test
*** glibc detected *** ./a.out: free(): invalid pointer: 0x0828c008 ***
process end
~/test <root@debian> 11:46:43 $ MALLOC_CHECK_=2 ./a.out
*ptr=mcheck test
Aborted
~/test <root@debian> 11:50:03 $ ./a.out
*ptr=mcheck test..........
memory clobbered past end of allocated block
Aborted
#include <stdio.h>
int main(int argc, char * argv[])
{
mcheck(NULL);
const char * src = "mcheck test";
char * ptr = (char *)malloc(sizeof(char) * 32);
memcpy(ptr, src, strlen(src));
ptr[32] = '\0';
printf("*ptr=%s\n", ptr);
free(ptr);
ptr = NULL;
printf("process end\n");
return 0;
}
~/test <root@debian> 11:50:55 $ ./a.out
*ptr=mcheck test..........
memory clobbered past end of allocated block
Aborted