首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

请问new delete的使用

2012-10-13 
请教new delete的使用char *reverse(char *str){int lenstrlen(str)char *ptrnew char[len+1]//......

请教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就可以。

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

热点排行