malloc 中的内存泄漏?
memory leak in malloc?
我在 C 中得到了以下错误代码,我想知道是否会发生内存泄漏,或者是否会有一个指向空闲内存位置的指针。
int* p = (int*) malloc(sizeof(int));
p = NULL;
free(p);
你会发生内存泄漏。
将 NULL
分配给 p
后,您将无法再引用使用 malloc
分配的内存。
您对 free
的调用将尝试释放 NULL
,什么都不做。
以下将正确释放内存:
int *p = malloc(sizeof(int));
free(p);
p = NULL;
注意释放后不需要将p
设置为NULL
,只需要前两行。
是的,它会泄漏内存。在释放它指向的内容之前,您将 p 分配给 NULL。一项快速更改即可解决问题:
int* p = malloc(sizeof(int));
free(p);
p = NULL;
这里的区别是我们在设置p为NULL之前释放了malloc分配的地址。一般情况下,将指针设置为NULL不会释放内容,但可以让你检查指针是否有效,有很多实际应用。
我在 C 中得到了以下错误代码,我想知道是否会发生内存泄漏,或者是否会有一个指向空闲内存位置的指针。
int* p = (int*) malloc(sizeof(int));
p = NULL;
free(p);
你会发生内存泄漏。
将 NULL
分配给 p
后,您将无法再引用使用 malloc
分配的内存。
您对 free
的调用将尝试释放 NULL
,什么都不做。
以下将正确释放内存:
int *p = malloc(sizeof(int));
free(p);
p = NULL;
注意释放后不需要将p
设置为NULL
,只需要前两行。
是的,它会泄漏内存。在释放它指向的内容之前,您将 p 分配给 NULL。一项快速更改即可解决问题:
int* p = malloc(sizeof(int));
free(p);
p = NULL;
这里的区别是我们在设置p为NULL之前释放了malloc分配的地址。一般情况下,将指针设置为NULL不会释放内容,但可以让你检查指针是否有效,有很多实际应用。