这个指针内存储器需要释放吗
这个指针内存需要释放吗?p2需要释放吗?#include stdafx.h#include stdio.h#include stdlib.hint mai
这个指针内存需要释放吗?
p2需要释放吗?
#include "stdafx.h"
#include <stdio.h>
#include "stdlib.h"
int main(void)
{
int *p1, *p2;
p1 = (int *)malloc(sizeof(int));
p2 = p1;
//中间代码就不写了。
free(p1);
free(p2);//这里需要释放吗?
return 0;
}
[解决办法]不需要,而且也不可以
[解决办法]当然不需要,p1 p2指向同一块内存,只需释放一次,再释放会出错。
不过你也许需要把p1 p2指向的内存释放后,p1 p2赋为空指针,习惯上好点。
不过你这里后面没东西了,就没必要。。
[解决办法]只有动态申请的,才可以free。
p2不是动态申请的,
free会出错的。
[解决办法]我曾经看过一个计算中心的文档说明,说:不要让多个指针指向一块内存!指向同一块内存指针越多,那么悬空指针错误几率越大!而且不能并行执行!
当然,简单小程序用用无妨!注意指向的改变,以及避免多次释放!
回答你的问题:不需要释放p2!但是如果下文还有代码,安全考虑,再释放空间后,加上安全机制:p2=p1=NULL;
[解决办法]free(p1)或是free(p2),使用两者中的任何一个均可,记住:一夫一妻制,一次malloc对应一次free,不能多也不能少。