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