1 test()2void test() { 3 int *p = malloc(1); 4 free(p); 5 free(p); // warn: attempt to free released memory 6 } 7 test()8void test() { 9 int *p = malloc(sizeof(int)); 10 free(p); 11 *p = 1; // warn: use after free 12 } 13 test()14void test() { 15 int *p = malloc(1); 16 if (p) 17 return; // warn: memory is never released 18 } 19 test()20void test() { 21 int a[] = { 1 }; 22 free(a); // warn: argument is not allocated by malloc 23 } 24 test()25void test() { 26 int *p = malloc(sizeof(char)); 27 p = p - 1; 28 free(p); // warn: argument to free() is offset by -4 bytes 29 } 30 31