C - 马尔洛克中的内存泄漏?



我在 C 语言中有以下错误的代码段,我想知道是否会有内存泄漏,或者是否会有一个指向可用内存位置的指针。

int* p = (int*) malloc(sizeof(int));
p = NULL;
free(p);

是的,它会泄漏内存。在释放 p 指向的内容之前,将 p 分配给 NULL。一个快速更改将修复它:

int* p = malloc(sizeof(int));
free(p);
p = NULL;

这里的区别在于,我们在将 p 设置为 NULL 之前免费提供 malloc 分配的地址。通常,将指针设置为 NULL 不会释放内容,但可以让您检查指针是否有效,这可以有很多实际应用。

您将有内存泄漏。

NULL分配给p后,您将无法再引用使用malloc分配的内存。

你对free的呼唤将试图释放NULL,什么都不做。

以下内容将正确释放内存:

int *p = malloc(sizeof(int));
free(p);
p = NULL;

请注意,释放后不需要将p设置为NULL,您只需要前两行。

相关内容

  • 没有找到相关文章

最新更新