c游戏引擎设计和超出范围的对象

我正在研究基于C的小型组件游戏引擎.各种组件被添加到gameobject对象的内部列表中,为了节省一些时间我不制作这些组件的成员变量,只有游戏对象是成员变量,如下所示:

void Initialize()
{     
   MeshComponent* meshRenderer = new MeshComponent(mesh, material);
   m_GameObject.AddComponent(meshRenderer);
}

meshRenderer变量将添加到AddComponent()中的组件列表中,但在此函数结束时超出范围.

稍后(在游戏的更新/绘制循环中)调用此组件并且一切正常,尽管对象在初始化期间已超出范围.

我是否理解范围有问题,这样使用是否安全,或者我应该采取另一种方法(不必为每个组件制作成员变量)?

谢谢您的帮助!

最佳答案 首先,我建议你在开始像游戏引擎这样的大型项目之前更多地学习C语言.

超出范围的是meshRenderer变量,它是MeshComponent *类型,它是指向MeshComponent的指针.当指针超出范围时会发生什么?什么都没有.使用new运算符在堆上分配内存,它将保留在那里,直到您使用delete运算符释放它.

点赞