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