我最近着迷于图形编程,并且我注意到许多图形引擎(即Ogre)和许多编码器总体上更喜欢动态地初始化类实例。下面是从Ogre Basic Tutorial 1希望堆栈堆栈?
//...
Ogre::Entity* ogreHead = mSceneMgr->createEntity("Head", "ogrehead.mesh");
Ogre::SceneNode* headNode = mSceneMgr->getRootSceneNode()->createChildSceneNode("HeadNode");
//...
ogreHead
和headNode
数据成员和方法然后被称为ogreHead->blabla
一个例子。
为什么要乱用对象指针而不是普通对象?
顺便说一句,我也读过的地方,堆内存分配比堆内存分配慢得多。
请注意,许多库通常都有一个预先分配的对象池(因此称为“对象池”),因此它们的“新”调用比提供的“新”更快。 – CoryKramer 2015-02-07 17:40:26
我不明白。 “预分配对象池”是什么意思? – Pilpel 2015-02-07 17:42:10
一个对象池基本上是“我要去'新'50个'Foo'的对象,当有人叫'new'时,我会重新初始化其中的一个,让它们使用它。 '删除'我只是把对象拿回来重用。“这节省了构造函数和析构函数的开销时间。 https://en.wikipedia.org/wiki/Object_pool_pattern – CoryKramer 2015-02-07 17:43:27