0
std::vector<int*> * vec=new std::vector<int*>();
int* p=new int();
int* q=new int();
vec.push_back(p);
vec.push_back(q);
.
.
.
vec.clear();

我的问题是内存会被释放吗???

4

2 回答 2

3

保存指针的内存,是的。存放指针内容的内存,没有。delete vec;此外,您应该通过在程序末尾编写来释放向量本身,但我想这不是您所要求的。

于 2013-03-05T06:27:33.990 回答
2

delete不,当你使用new(而不是使用智能指针)时,你应该使用, 。对于向量的元素 - 不,内存不会被释放,您应该delete在向量中的每个元素上使用。就像是

std::for_each(vec.begin(), vec.end(), [](const int* p) { delete p; });
于 2013-03-05T06:27:50.790 回答