为什么我在尝试推送向量时遇到std :: bad_alloc错误?

时间:2013-02-14 02:01:14

标签: c++ parsing vector bad-alloc

C ++ 以下是我的代码中引发错误的部分:

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

IDList是一个定义如下的向量:

std::vector<Token*>* IDlist;

为什么那行代码不能推送我的Token对象?感谢。

编辑:

当我尝试这个时:

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

我得到同样的错误;当尝试推入向量时会发生这种情况。

1 个答案:

答案 0 :(得分: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);