int main() { node *list = NULL; node *n; // create a list for (int i = 0; i < 400; ++i) { n = (node *) malloc(sizeof(node)); n->next = list; list = n; } // free everything in it but one while (list && list->next) { node **pprev = &list; while ((n = *pprev)) { *pprev = n->next; free(n); if (*pprev) pprev = &(*pprev)->next; } } printf("EXPECTED LEAK: %p with size %zu\n", list, sizeof(node)); m61_printleakreport(); }
int main() { char *ptrs[10]; ptrs[0] = (char *) malloc(10); ptrs[1] = (char *) malloc(11); ptrs[2] = (char *) malloc(12); ptrs[3] = (char *) malloc(13); ptrs[4] = (char *) malloc(14); ptrs[5] = (char *) malloc(15); ptrs[6] = (char *) malloc(16); ptrs[7] = (char *) malloc(17); ptrs[8] = (char *) malloc(18); ptrs[9] = (char *) malloc(19); free(ptrs[3]); free(ptrs[8]); free(ptrs[0]); m61_printleakreport(); }
int main() { node *list = NULL; node *n; // create a list for (int i = 0; i < 400; ++i) { n = (node *) malloc(sizeof(node)); n->next = list; list = n; } // free everything in it while ((n = list)) { list = n->next; free(n); } m61_printleakreport(); printf("OK\n"); }