#include <iostream>
#include <vector>
#include <memory>
using namespace std;
class Class
{
public:
Class() {}
~Class() { cout << "destructor called" << endl; }
};
int main()
{
cout << "Hello World!" << endl;
vector<Class *>(10, new Class); //不输出,没有调用析构
// 手动释放所有指针
cout << "手动释放!" << endl;
{
auto vp = vector<Class *>(10);
for(int i = 0; i < 10; i++)
vp.push_back(new Class);
for(auto p: vp)
delete p;
}
cout << "智能指针自动释放!" << endl;
// 智能指针自动释放内存
{
auto vp = vector<unique_ptr<Class>>(10);
for(int i = 0; i < 10; i++)
vp.push_back(make_unique<Class>());
}
return 0;
}
c++: vector存指针,析构是不会释放内存
最新推荐文章于 2024-07-24 11:32:27 发布