读书人

关于free的有关问题

发布时间: 2012-12-14 10:33:07 作者: rapoo

关于free的问题
在函数A中malloc一段内存保存内容,用指针返回这段内容供另一函数B使用,之后应该如何释放这段内存呢? 是在B中设一指针,然后指向这段内存,再释放吗?

func A()
{
*p = ()malloc();
....
return p;
}

func B()
{
...
*temp = func A();
free(temp);

}

是这样吗? 有点迷惑,望高手指教!
[最优解释]
ok,你的代码是对的
[其他解释]
可以,free是告诉操作系统temp所指向的内存被回收
[其他解释]
你这样是对的,原则上只要在进程退出之前把所有申请的内存释放掉就可以了.但是一般是只要申请的内存不再使用就应该马上释放掉,免得不必要的麻烦.
[其他解释]
LZ 的做法是正确的.
func A()返回的是 一个地址
然后将使指针temp指向该地址*temp = func A();
最后free(temp),也就是释放的该地址的内存
[其他解释]
新手,说错勿怪貌似,*与*temp交换的是值,不是地址吧,释放了*temp,*p应该还占用内存吧!
[其他解释]
哦哦,懂了。。
[其他解释]
指针只是栈上的一个机器字的地址值而已 方法结束 指针出栈 内存释放
[其他解释]


func A()
{
int *p = NULL;
p = (int *)malloc(100);
....
return p;
}

func B()
{
int *temp = NULL;
temp = func A();
free(temp);
}


这样更规范些。
[其他解释]
写的对,返回指针释放指针指向的控件就对了
[其他解释]
学习学习~
[其他解释]
对的,malloc配置成功后会返回一个指针,即地址,LZ用指针temp接收这一地址,然后根据这地址释放内存空间。 相当于*p = malloc(10); ....... free(p);
[其他解释]
free(malloc(XXX));
[其他解释]
看看回复,我也学习了,

读书人网 >C++

热点推荐