創作內容

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 台灣

相關創作

同標籤作品搜尋:記憶體管理|Qt|程式設計

留言共 0 篇留言

我要留言提醒:您尚未登入,請先登入再留言

喜歡★iqandadie 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:定量記憶體槽... 後一篇:訂做一個fxxx字串...

追蹤私訊切換新版閱覽

作品資料夾

a86189642看到的人
看到的人會變得幸福哦~ヾ(*´∀ ˋ*)ノ看更多我要大聲說昨天23:39


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】