以下 C 代码是否会产生内存泄漏?



我想知道以下代码段是否会产生内存泄漏:

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);
}

相关内容

  • 没有找到相关文章

最新更新