从vector向量检索的std :: bad_alloc

时间:2014-02-23 04:56:01

标签: c++ qt stdvector bad-alloc

(我以前从未问过这里的问题所以请原谅我,如果我不遵守正确的礼节)

我正在制作用于GLWidget的场景图,我遇到了一个奇怪的bad_alloc案例。我的场景图中的每个节点(称为graphNode)都包含以下字段:

QString* name
graphNode* parent
std::vector<graphNode*> children
myPolygon* polygon

(myPolygon是我创建的用于存储顶点和颜色数据的自定义多边形类)

我的SceneGraph类包含以下字段:

graphNode* root
std::vector<graphNode*> allNodes
std::vector<myPolygon> allShapes

当我尝试构建allNodes时,会发生bad_alloc。我的根ndoe有5个孩子,如果我使用std :: cout打印子矢量的大小我得到5.但是,当我尝试将每个子节点推送到allNodes时,我得到一个std :: bad_alloc错误。 QT中的确切应用输出是

terminate called after throwing an instance of 'std::bad_alloc'
what():  std::bad_alloc

我不确定我做错了什么,特别是因为程序认识到孩子们存在(当我逐步使用打印语句和调试器时,我可以看到孩子们都是我期望他们的非常感谢任何帮助,如果我需要提供我的代码,我将非常乐意这样做。

编辑:因为有人问,基本上我有一些代码可以创建如下字符:

节点根:         名字“根”         polygon =躯干的矩形         graphNode * parent = NULL         矢量5个孩子[头部,Arm1,Arm2,Leg1,Leg2]

节点头:     名字“头”     polygon =头部的圆圈     graphNode * parent = root     一个空的儿童矢量

节点Arm1     名称“arm1”     polygon =上臂的矩形     graphNode * parent = root     1个孩子的矢量[Forearm1]

节点Arm2     名字“arm2”     polygon =上臂的矩形     graphNode * parent = root     1个孩子的矢量[Forearm2]

节点Leg1     名称“leg1”     polygon =大腿的矩形     graphNode * parent = root     1个孩子的矢量[Loweleg1]

节点Leg2     名称“leg2”     polygon =大腿的矩形     graphNode * parent = root     1个孩子的矢量[Loweleg2]

Node Forearm1     名称“forearm1”     polygon =前臂的矩形     graphNode * parent = Arm1     一个空的儿童矢量

Node Forearm2     名称“forearm2”     polygon =前臂的矩形     graphNode * parent = Arm2     一个空的儿童矢量

节点Lowerleg1     名称“lowerleg1”     polygon =小牛的一个矩形     graphNode * parent = Leg1     一个空的儿童矢量

节点Lowerleg2     名称“lowerleg2”     polygon =小牛的一个矩形     graphNode * parent = Leg2     一个空的儿童矢量

0 个答案:

没有答案