读书人

关于指针释放的有关问题

发布时间: 2012-01-22 22:38:43 作者: rapoo

关于指针释放的问题?
代码如下:
char *Fuction1()
{
char * str1=new char[256];
return str1;
}

Fuction2()
{
char*str2;
str2=Fuction1();
}
指针str1需要释放吗?是否应该在Fuction2中释放,可是Fuction2中并没有明显的new运算符,释放显然是不自然的,有什么好的办法吗?

[解决办法]
char *Fuction1()
{
char * str1=new char[256];
return str1;
}
返回局部对象是不可取的
[解决办法]
str1 是要在Fuction2() ,如果你不释放,你出了Fuction2()就没有机会

[解决办法]
需要在Function2中释放。有些时候,需要分配多大的内存,只有在被调用函数内部才能知道时,必须这么做,比如许多接口封装的内容。当然,你也可以考虑一下其他处理方法,比如再封装一个函数用来获取需要分配的空间的大小,然后在Function2中分配空间,将空间的指针作为Function1的参数传入即可实现。
[解决办法]
这种在函数内分配内存在函数外释放的情况是难免的了, Windows API也有好多需要在外部释放的函数。
[解决办法]
四星上将港得8错,传长度再来,将new与delete搭配好...


Fuction2()
{
char*str2;
str2=Fuction1();
delete []str2;
}

[解决办法]
写成对象,初始化的时候分配内存,析构释放, 对象交系统处理.不用你管
[解决办法]
智能指针。
[解决办法]
当然需要释放了。一个new必须有一个delete与这匹配。
[解决办法]
代码如下:
char *Fuction1(char * str1)
{
return str1;
}

Fuction2()
{
char*str1 = new char[256];
char*str2;
str2=Fuction1(str1);
delete []str2
}
少了delete,
好像比较恶心,对不起啦
这样直观,不知道满足不满足需求?

[解决办法]
同意楼上
[解决办法]
用static定义局部变量,再在程序结束时释放

读书人网 >VC/MFC

热点推荐