1

(我以前从来没有在这里问过问题,所以如果我不遵守适当的礼仪请见谅)

我正在研究用于 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

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

编辑:既然有人问,基本上我有一些代码可以创建一个字符,如下所示:

节点根:名称“根”多边形 = 躯干图的矩形节点* 父级 = 5 个子级的 NULL 向量 [Head, Arm1, Arm2, Leg1, Leg2]

节点头:名称“头”多边形=头部的圆圈 graphNode* parent = root 一个空的子向量

节点 Arm1 名称“arm1”多边形 = 上臂的矩形 graphNode* parent = 1 个子节点的根向量 [Forearm1]

节点 Arm2 名称“arm2”多边形 = 上臂图形节点* 父级 = 1 个子级的根向量 [Forearm2]

节点 Leg1 名称“leg1”多边形 = 大腿的矩形 graphNode* parent = 1 个子节点的根向量 [Loweleg1]

节点 Leg2 名称“leg2”多边形 = 大腿的矩形 graphNode* parent = 1 个子节点的根向量 [Loweleg2]

节点 Forearm1 名称 "forearm1" 多边形 = 前臂图形节点的矩形节点 * parent = Arm1 一个空的子向量

节点 Forearm2 名称 "forearm2" 多边形 = 前臂 graphNode* parent = Arm2 一个空的子向量的矩形

节点 Lowerleg1 名称 "lowerleg1" 多边形 = 小腿的矩形 graphNode* parent = Leg1 一个空的子向量

节点 Lowerleg2 名称 "lowerleg2" 多边形 = 小腿矩形 graphNode* parent = Leg2 一个空的子向量

4

0 回答 0