c中的以下代码是否会产生内存泄漏?
does the following code in c produce a memory leak?
我想知道下面这段代码会不会产生内存泄漏:
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);
}
我想知道下面这段代码会不会产生内存泄漏:
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);
}