作者lytn (sapphira)
看板C_and_CPP
標題[問題] vector大小不受控制了
時間Tue Apr 7 17:56:18 2009
我是用VC.net 2005寫的
今天在新增一個VECTOR時
http://rafb.net/p/0GaGMj46.html
vector<int> LBt;
到後面
int newsize=10;
int size;
LBt.resize(newsize) ;
size=LBt.size() // ==10沒錯
可是在偵錯中的變數欄裡面,一點開LBt,就會出現系統提示超過10000筆之類的
實在不懂哪來的....
好像還會增加,
vector<int> 是測試用的,真的有用的 vector<MyClass>,
這個類別很大,放著一下就當機了....
大概是甚麼原因呢?
1F:推 Ebergies:當然是因為亂用記憶體呀 04/07 18:06
2F:→ lytn:怎麼說?vector的記憶體不是系統自動連續配的嗎? 04/07 18:13
3F:→ lytn:結果好像是沒辦法在 Global Scope 理宣告vector? 04/07 19:52
4F:→ lytn:我改在 function scope 裡宣告就都正常.怪 04/07 19:53
reambeam()就像裡面有一個vector<int> avec,這個初始化完的超做就完全正常.
就算換成vector<Beam> avec(10)也沒問題.
class Beam 太雜 就先不給囉
5F:推 yoco315:full source code 04/07 20:23
※ 編輯: lytn 來自: 140.113.130.186 (04/07 20:43)
※ 編輯: lytn 來自: 140.113.130.186 (04/07 20:44)
7F:推 yoco315:我這邊沒問題 04/07 20:47
我新開一個 windows form 專案.
自動產生一個 From1.h,指拖了一個textbox上去,
增加 Form_Load 事件
http://rafb.net/p/SNtaUX79.html
在Form1_load事件裡
testvec.resize(20);這行增加中斷點.
直行到這裡以後,用滑鼠圈起變數,右鍵,新增監看式時
就會有 識別向'testvec'超過範圍
這是新專案,應該就跟我其他城市沒關係了吧?
※ 編輯: lytn 來自: 140.113.130.186 (04/07 21:18)
8F:推 aecho:this->textBox1 ->Text =avec.size().ToString() ; 04/07 21:39
9F:→ aecho:為什麼 -> 左邊會有個空白?是貼上去的程式碼的問題? 04/07 21:40
10F:→ aecho:還是codes本身就有空白呢? 04/07 21:40
11F:→ lytn:那個是 自動完成時按的空白 不影響 04/07 21:44