这是一个例子,我很惊讶它是否是一种释放指针分配内存的正确方法
char* functionTest()
{
char *a = new char[10];
return a;
}
int main()
{
char *b;
b=functionTest();
delete[] b;
return 0;
}
这是一个非常初学的问题,但仍想澄清我的怀疑。 从删除编辑删除[]谢谢@sharptooth。 提前谢谢。
答案 0 :(得分:4)
技术上正确的C ++(截至目前使用delete[]
进行编辑)
代码编译运行没有错误。
但是在生产C ++代码中,你很少使用new []和delete [],并且更有可能使用vector,或者字符串处理使用string。
如果你真的想用new []分配一个数组,你可能希望使用boost :: shared_array来管理它的删除。如果你没有使用shared_ptr但是必须放入你自己的删除调用delete []。
这种技术称为RAII(资源获取是初始化),它确保对于您分配的任何资源,无论后续发生什么(包括可能引发的任何异常),您都已经在处理其后续处置。
答案 1 :(得分:0)
以下是对delete
和delete[]
之间差异的精彩技术说明:
http://blogs.msdn.com/b/oldnewthing/archive/2004/02/03/66660.aspx