在矢量中的指针

时间:2013-03-05 06:26:13

标签: c++ pointers vector

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();

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

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

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

这样的东西
std::for_each(vec.begin(), vec.end(), [](const int* p) { delete p; });