2013-02-14 66 views
0

C++ 下面是引發錯誤我的代碼的部分:爲什麼在嘗試推送向量時會出現std :: bad_alloc錯誤?

IDlist->push_back(lex->getCurrentToken()); 

IDList表是這樣定義的向量:

std::vector<Token*>* IDlist; 

爲什麼不能說的代碼行推我的令牌對象?謝謝。

編輯:

當我試試這個:

Token* t = lex->getCurrentToken(); 
IDlist->push_back(t); 

我得到同樣的錯誤;當嘗試向矢量推入時會發生這種情況。

+1

lex-> getCurrentToken()返回指針?以及爲什麼IDlist需要指針?你有新的IDlist嗎? – billz 2013-02-14 02:03:37

+0

也許矢量需要調整大小,但不能分配足夠的內存? – James 2013-02-14 02:03:39

+1

你的代碼看起來不錯。嘗試調用'getCurrentToken()'而不將其推送到向量以查看錯誤是從哪裏來的。 – ApproachingDarknessFish 2013-02-14 02:06:36

回答

2
std::vector<Token*>* IDlist; 

IDlist是一個指針,它指向一個向量,並且您還沒有通過new分配它。 你需要在使用前分配IDLIST:

IDlist = new std::vector<Token*>(); 

但是,什麼是使用指針向量的點?只需聲明IDlist爲變量:

std::vector<Token*> IDlist; 
Token* t = lex->getCurrentToken(); 
IDlist.push_back(t); 
+0

我改變了它,所以它是一個Token指針的向量,現在它正在工作。謝謝 – amorimluc 2013-02-14 02:29:27

相關問題