2013-02-14 107 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

相关问题