作者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