Pea*_*Gen -3 c++ pointers destructor visual-studio-2010
请查看以下代码
#include <iostream>
using namespace std;
class Memory
{
private:
int *memory;
public:
Memory()
{
memory = new int[3];
for(int i=0;i<3;i++)
{
memory[i] = i;
cout << memory[i] << endl;
}
}
~Memory()
{
delete[] memory;
}
};
int main()
{
cout << "Running" << endl;
Memory m;
// do I have to invoke ~Memory() ?
int *secondMemory = new int[5];
//How to clear the memory of 'secondMemory' ?
system("pause");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在这里,我已经清除memory了类的析构函数中动态分配的数组的内存.但我的问题是
这些问题在代码的适当位置作为注释询问.请帮忙!
编辑
这里的问题是,如果我在main()中删除'secondMemory'的内存,那么一旦分配内存就会消失!
我必须调用~Memory()吗?
不,具有自动存储持续时间(如m)的对象在超出范围时会被销毁.换句话说,析构函数由系统自动调用.在这种情况下,m从main()函数返回时会被销毁.
如何清除'secondMemory'的记忆?
分配的每个对象new必须通过相应的调用来销毁delete,并且每个分配的数组new[]必须通过相应的调用来销毁delete[]:
delete[] secondMemory;
Run Code Online (Sandbox Code Playgroud)
如果不这样做会导致内存泄漏.
但是,请记住,使用原始指针执行手动内存管理在Modern C++中被认为是一种糟糕的编程习惯.而是std::vector<>尽可能地使用标准容器.
| 归档时间: |
|
| 查看次数: |
16717 次 |
| 最近记录: |