繁体   English   中英

这是在c ++中释放指针内存的正确方法吗

[英]Is this the proper way of freeing Pointer Memory in c++

这是一个例子,我为它是否是释放指针分配的内存的正确方法而感到震惊

char* functionTest()  
{  
    char *a = new char[10];  
    return a;  
}  
int main()  
{  
    char *b;  
    b=functionTest();  
    delete[] b;  
    return 0;  
}

这是一个非常初学者的问题,但仍然想消除我的疑问。 编辑从删除到删除[]谢谢@sharptooth。 提前致谢。

技术上正确的C ++(目前为止,使用delete[]进行编辑)

该代码将编译并运行而不会出现错误。

但是,在生产C ++代码中,您将很少使用new []和delete [],并且将更可能使用vector或对字符串进行字符串处理。

如果您确实想使用new []分配数组,则不妨使用boost :: shared_array来管理其删除。 失败的话,您可以使用shared_ptr,但是必须放入自己的调用delete []的删除器。

此技术称为RAII(资源获取即初始化),该技术可确保对于您分配的任何资源,无论随后发生了什么(包括可能引发的任何异常),您都已经在照顾它的后续处理。

这是对deletedelete[]之间区别的很好的技术描述: http : //blogs.msdn.com/b/oldnewthing/archive/2004/02/03/66660.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM