[問題] 清除vector所占空間的疑問

看板C_and_CPP作者 (我愛阿蓉)時間15年前 (2009/08/11 03:45), 編輯推噓1(104)
留言5則, 2人參與, 最新討論串1/2 (看更多)
以下是我測試小程式 參考某網頁說 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

08/11 04:10, , 1F
查查 vector 的 size() 和 capacity() 囉...
08/11 04:10, 1F

08/11 04:11, , 2F
vector 是會預支空間的... (為了避免頻繁的要求空間)
08/11 04:11, 2F

08/11 04:30, , 3F
我用capacity只能看到跑完while後的大小 swap後 就看不到了.
08/11 04:30, 3F

08/11 04:30, , 4F
我該怎麼驗證呢@@
08/11 04:30, 4F

08/11 04:31, , 5F
喔喔我耍笨了 他印出138255 所以是4*138255 Byte嚕??!!!
08/11 04:31, 5F
文章代碼(AID): #1AW7ZYQC (C_and_CPP)
文章代碼(AID): #1AW7ZYQC (C_and_CPP)