读书人

请问new delete的使用

发布时间: 2012-10-13 11:38:17 作者: rapoo

请教new delete的使用
char *reverse(char *str)
{
int len=strlen(str);
char *ptr=new char[len+1];
//......
return ptr;
}
我这里在调用函数中通过new开辟了新的内存,并返回这段内存的起始地址。问题是我应该在哪里释放 如何释放这段内存?
我不太清楚该如何释放调用函数中局部开辟的内存空间。
int main(void)
{
char *name="abcdefgh";
char *ptr=reverse(name);
//....
delete []ptr;
ptr=NULL;

return 0;
}
这样对不对?请指教!

[解决办法]
那样是对的。
当你确定不需要使用它的时候就可以delete了
[解决办法]
使用new申请的内存是堆上的,需要手动释放,在函数结构时不会自动释放,需要手动delete(ptr);
[解决办法]

探讨

不能这样,函数里面的分配的内存随着函数调用的结束就销毁掉了~~千万不能返回函数里面的局部变量~~

[解决办法]
new malloc分配的内存需要手动释放,就是当你不需要的时候,delete free就可以。

另外,你举得例子是可以的。

读书人网 >C语言

热点推荐