代码如下:
char *p=malloc(200);
p=NULL;
现在我已经 NULLed 了p
,有什么方法可以再次使用这 200 字节的内存吗?如果没有,我至少可以释放他们吗?
代码如下:
char *p=malloc(200);
p=NULL;
现在我已经 NULLed 了p
,有什么方法可以再次使用这 200 字节的内存吗?如果没有,我至少可以释放他们吗?
在调用p=NULL;
使用之前free(p);
但是在释放内存之前,如果您将指针分配给NULL,它将丢失...
不,你不能把它捐给无人先生,当你这样做的时候,
p = NULL;
既然没有人先生是自私的,他不会回报你给他的任何东西。只有当您的程序结束并且您的应用程序运行的进程退出时,他才会将其返回给您的操作系统。
您总是需要一个指针来保存内存位置,否则您无法取回它。
char *p=malloc(200);
char *p2 = p;
p = NULL;
free(p2);
就目前而言,没有办法恢复记忆。您可以防止丢失它,但无法找回它。唯一的选择是退出程序。
这只有在您使用垃圾收集器时才有可能,例如Boehm-Demers-Weiser 收集器。如果不能使用垃圾收集器,则无法回收内存。
当然,如果你free(p)
在设置之前调用,内存会被回收p = NULL
,但你已经知道了。
exec()
此外,如果您或进程退出,操作系统将自动回收内存。