0 GP
Qt:使用Memory Pool
作者:likwueron│2015-03-25 17:51:35│巴幣:0│人氣:261
我們把Memory Pool做好後,碰到了一個問題:
如果我直接把指標轉成我們要的型別,使用其中的Qt的容器類別(QList, QString, QMap等等)會當掉。
這似乎和其內部的設計有關。
所以我們不能直接使用指標,而是要稍微間接一點。
還好,new 和 delete 這兩個運算子是可以覆載的。
static void* operator new(size_t size);
static void operator delete(void *p);
配置失敗的時候可以用 throw std::bad_alloc();
第二個問題是這個memory pool要放哪?
用獨體模式(singleton pattern)是一種方式,不過我發現這會讓程式結束時當掉。
這可能是parent設定的問題,也許有物件在關閉階段還在操作。
Qt其實有一個特別的指標 qApp,它會指向QApplication實體。
我後來就模仿了一下,也弄個 qMem 指標,效果不錯。
不過我想,為了方便使用,應該弄一個QGameApplication省去這部份的設定。
最後一個問題是多線程。
目前來說沒有提高速度的必要,不過我想對於多數遊戲來說這應該是必要的。
只是我上次弄鎖(QMutex)的時候整個程式都卡住了,心理上有些陰影。
引用網址:https://home.gamer.com.tw/TrackBack.php?sn=2787904
Some rights reserved. 姓名標示-非商業性 2.5 台灣