此问题已经在这里有了答案:
我声明并分配矢量指针和具有大数组指针的类的共享指针。通过删除矢量指针,我希望从大数组中释放内存。我的问题是,为什么在“ return 0”之前的“ delete vec”之后的正确时刻没有释放内存。在调试模式下,您可以在窗口任务管理器中看到它。请让我知道为什么。
class test
{
public:
test() { A = new double[500000000]; }
~test() { delete[] A; }
double *A;
};
int main()
{
vector<shared_ptr<test>> *vec =new vector<shared_ptr<test>>();
vec->push_back(shared_ptr<test>(new test()));
vec->push_back(shared_ptr<test>(new test()));
vec->push_back(shared_ptr<test>(new test()));
delete vec;
return 0;
}