void add(MEM_INFO alloc_info) { MEM_LEAK * mem_leak_info = NULL; mem_leak_info = (MEM_LEAK *)malloc(sizeof(MEM_LEAK)); mem_leak_info->mem_info.address = alloc_info.address; mem_leak_info->mem_info.size = alloc_info.size; strcpy(mem_leak_info->mem_info.file_name, alloc_info.file_name); mem_leak_info->mem_info.line = alloc_info.line; mem_leak_info->next = NULL; if (ptr_start == NULL) { ptr_start = mem_leak_info; ptr_next = ptr_start; } else { ptr_next->next = mem_leak_info; ptr_next = ptr_next->next; } if(mem_flag) { printf("mem_leak_info =%p\n",mem_leak_info); mem_flag = 0; report_mem_leak(); } }
void main() { void *ptr; ptr=malloc(256); ptr=malloc(128); strdup("0123456789abcdef"); calloc(1,32); free(ptr); report_mem_leak(); }