Ant*_*996 2 c++ memory memory-leaks memory-management c++11
我是C++的新手,我的内存管理问题.
我有一个功能a()调用3个功能(b(),c(),d()),每个其中一个返回的动态分配的数组MyClass对象:
void a(){
MyClass * one=b();
MyClass * two=c();
MyClass * three=d();
//operate with 3 array (one, two and three)
delete [] one;
delete [] two;
delete [] three;
}
MyClass * b(){
MyClass * array=new MyClass[2000];
//many operations on array
return array;
}
MyClass * c(){
MyClass * array=new MyClass[2000];
//many operations on array
return array;
}
MyClass * d(){
MyClass * array=new MyClass[2000];
//many operations on array
return array;
}
Run Code Online (Sandbox Code Playgroud)
在a()我的许多操作之后,我必须删除我用3个函数创建的3个数组.如果我使用delete []上面代码中的3个表达式来做,那可以吗?
我问自己这个问题,因为我认为这段代码正确地释放了所有内容,但是分析我的c ++程序的内存分配,我没有看到这种删除的证据.
为了可靠的内存管理,你应该使用智能指针,如std::unique_ptr.因此,当您的函数返回动态分配的值时,它应该返回std::unique_ptr该值以确保将释放此值.
std::unique_ptr<MyClass[]> array(new MyClass[2000]);
Run Code Online (Sandbox Code Playgroud)
但是在你的情况下你应该考虑使用std::vector而不是原始数组.
| 归档时间: |
|
| 查看次数: |
555 次 |
| 最近记录: |