2013-03-05 113 views
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(); 

我的問題是將內存被釋放???指針在矢量

+0

糾正我,如果我錯了,但'vector :: push_back'接受類型爲'T'的參數而不是'void'? – 2013-03-05 06:27:41

+0

@ H2CO3是的,這是正確的,但與問題無關。 – ApproachingDarknessFish 2013-03-05 06:29:32

回答

3

拿着指針的記憶,是的。存放指針內容的內存,不。另外,您應該在程序結束時通過編寫delete vec;來釋放載體本身,但我想,這不是您要求的。

2

號,您應該使用delete,當您使用new(而不是使用智能指針)。 而對於向量的元素 - 不,內存不會被釋放,你應該在向量中每個元素上使用delete。像

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