31 lines · c
1 2void test() {3 int *p = malloc(1);4 free(p);5 free(p); // warn: attempt to release already released memory6}7 8void test() {9 int *p = malloc(sizeof(int));10 free(p);11 *p = 1; // warn: use after free12}13 14void test() {15 int *p = malloc(1);16 if (p)17 return; // warn: memory is never released18}19 20void test() {21 int a[] = { 1 };22 free(a); // warn: argument is not allocated by malloc23}24 25void test() {26 int *p = malloc(sizeof(char));27 p = p - 1;28 free(p); // warn: argument to free() is offset by -4 bytes29}30 31