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();
我的问题是内存是否会被释放???
答案 0 :(得分:3)
持有指针的内存,是的。内存保持指针的内容,没有。此外,您应该通过在程序结束时编写delete vec;
来释放矢量本身,但我想,这不是您所要求的。
答案 1 :(得分:2)
没有。当您使用delete
(而不是使用智能指针)时,您应该使用new
。
对于向量元素 - 否,内存不会被释放,您应该在向量中的每个元素上使用delete
。像
std::for_each(vec.begin(), vec.end(), [](const int* p) { delete p; });