void test() { | |
int *p = malloc(1); | |
free(p); | |
free(p); // warn: attempt to free released memory | |
} | |
void test() { | |
int *p = malloc(sizeof(int)); | |
free(p); | |
*p = 1; // warn: use after free | |
} | |
void test() { | |
int *p = malloc(1); | |
if (p) | |
return; // warn: memory is never released | |
} | |
void test() { | |
int a[] = { 1 }; | |
free(a); // warn: argument is not allocated by malloc | |
} | |
void test() { | |
int *p = malloc(sizeof(char)); | |
p = p - 1; | |
free(p); // warn: argument to free() is offset by -4 bytes | |
} | |