請問vector reserve所配置的記憶體是多少? |
尚未結案
|
scott777
一般會員 發表:10 回覆:15 積分:5 註冊:2002-08-26 發送簡訊給我 |
假設 class Member{ private: int a; int b; char c[20]; public: Member(){}; ~Member(){}; } main() { vector程式寫了一兩年,發現總是走在懸捱邊緣!!! |
happosai
高階會員 發表:93 回覆:228 積分:109 註冊:2002-09-15 發送簡訊給我 |
|
scott777
一般會員 發表:10 回覆:15 積分:5 註冊:2002-08-26 發送簡訊給我 |
|
happosai
高階會員 發表:93 回覆:228 積分:109 註冊:2002-09-15 發送簡訊給我 |
抱歉,沒看清楚你的問題,答案我可以確定是
20*sizeof(Member)=560bytes,reserve() 會呼叫下面的 function
//_alloc.h Ln.355 return __n != 0 ? __REINTERPRET_CAST(value_type*,__sgi_alloc::allocate(__n * sizeof(value_type))) : 0;其中 __n = 20,sizeof(value_type)=sizeof(Member),所以答案是560bytes ,"C 標準程式庫"的vector範例也有用到reserve()這個函數,把範例放到 bcb6 用編譯,然後 trace push_back() 這個member function,你會發現他用到了 placement new 的技巧......:) 發表人 - happosai 於 2004/01/22 00:24:43 發表人 - happosai 於 2004/01/22 00:25:47 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |