作者QQ29 (我愛阿蓉)
看板C_and_CPP
標題[問題] 清除vector所占空間的疑問
時間Tue Aug 11 03:45:37 2009
以下是我測試小程式
參考某網頁說 vector 不管是clear erase或怎樣的 都不會回收空間於是乎用以下測試
int main(int argc, char *argv[])
{
vector<int> p;
int i=1;
while(i<100000)
{
p.push_back(i);
i++;
}
cin>>i;
for(int i=0;i<1;i++)
std::vector<int>().swap( p );
cin>>i;
return 0;
}
我用工作管理員跑
他cin之前是占領2188K
cin後 占1688K
心得:恩真厲害 但是怎麼會是少500K???? sizeof(int)*100000 應該是400K呀?
請教各位 多清出來的謎樣100K 是甚麼???
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.207.187
推 DigiPrince:查查 vector 的 size() 和 capacity() 囉... 08/11 04:10
→ DigiPrince:vector 是會預支空間的... (為了避免頻繁的要求空間) 08/11 04:11
→ QQ29:我用capacity只能看到跑完while後的大小 swap後 就看不到了. 08/11 04:30
→ QQ29:我該怎麼驗證呢@@ 08/11 04:30
→ QQ29:喔喔我耍笨了 他印出138255 所以是4*138255 Byte嚕??!!! 08/11 04:31