(我以前从未问过这里的问题所以请原谅我,如果我不遵守正确的礼节)
我正在制作用于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 一个空的儿童矢量