我想知道以下代码段是否会产生内存泄漏:
m = malloc(5);
m = NULL;
是的,存在内存泄漏。分配的 5 个字节不再可访问,因为您没有指向它们的指针。
如果保存指针,您仍然可以使用和释放资源
unsigned char *m = malloc(5);
if (m) {
unsigned char *p = m;
m = NULL; // can no longer access the memory through m
p[2] = 1; // but p is ok
free(p); // p is ok to free
} else {
fprintf(stderr, "Problem! malloc failed!n");
exit(EXIT_FAILURE);
}