作者xamous (一天死去一點)
看板C_and_CPP
標題[問題] 請問有沒有關於這樣的 pattern....
時間Thu Mar 19 14:40:24 2009
Hi 大家好,
最近在寫一隻程式的時候遇到一個問題...
我們的程式分成兩個部份... 一個是上層的 UI. 一個是下層的 engine
Engine 會從下層讀出資料,然後 UI 得到 engine 的資料,顯示在介面上
現在問題是資料格式有點複雜,它是長度不固定的串列
其元素是好幾層的樹狀結構,結構中包含大量字串以及串列
而且長度亦不固定
之前是用一堆類似這樣的 struct
struct B
{
char id[MAX_STRING];
char name[MAX_STRING];
}
struct A
{
char id[MAX_STRING];
char name[MAX_STRING];
int listCount;
B listOfB[MAX_LIST];
};
然後要的時後是這樣用
int aCount = Engine.GetACount();
A* aArray = new A[aCount];
Engine.GetA(aArray);
A 裡面就是巢狀的 B... 而且實際的環境是 B 還包 C, C 又包 D.
每個 struct 的大小都是固定的
當初會這樣設計是為了記憶體管理的方便,希望都在 UI 端配置記憶體
Engine 只負責填資料
但是這樣做的結果是很浪費空間,struct 非常肥大,在 heap 上還可以,
但是在 stack 上配置一個 struct 就有可能塞爆 stack...
不知道一般應用上,像這樣的架構是不是有什麼 pattern 可以使用?
想了老半天想不到什麼比較好的方法...
謝謝各位 m(_ _)m
--
雁子回到了遙遠的北方 妳的名字我已想不起來 別怪我 生命太匆忙
http://blog.xamous.net
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 71.137.0.214
1F:→ TConvertible:A , B 都改成 物件 , id 與 name 都改動態記憶體配置 03/19 16:14
2F:推 Ebergies:Try std::string 03/21 16:54