代码如下:
char *p=malloc(200);
p=NULL;
现在我已经将p
置为空,有什么方法可以再次使用这200字节的内存?如果没有,我至少可以释放它们吗?
答案 0 :(得分:3)
致电p=NULL;
之前
使用free(p);
但在释放内存之前,将指针指定为NULL,它将丢失......
答案 1 :(得分:2)
当你这样做时,不,你不能把它捐赠给No-one先生,
p = NULL;
由于No-one先生是自私的,他不会给你任何给予他的东西。当程序结束并退出应用程序的过程时,他只会将其返回给您的操作系统。
答案 2 :(得分:2)
你总是需要一个指针来保持记忆位置,否则你无法取回它。
char *p=malloc(200);
char *p2 = p;
p = NULL;
free(p2);
答案 3 :(得分:1)
目前看来,没有办法让记忆恢复。你可以防止失去它,但不能让它失败。唯一的选择是退出程序。
答案 4 :(得分:0)
仅当您使用垃圾收集器时才可以这样做,例如Boehm-Demers-Weiser collector。如果您不能使用垃圾收集器,则无法回收内存。
当然,如果您在设置free(p)
之前致电p = NULL
,则回收内存,但您已经知道了。
此外,如果exec()
或进程退出,操作系统将自动回收内存。