我最近着迷於圖形編程,並且我注意到許多圖形引擎(即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