|
|
发表于 2006-5-10 03:28:00
|
显示全部楼层
Re:游戏都需要有自己的内存管理程序吗?
仔细想了想,大家还是去做内存池吧。
对于内存碎片,大家没必要在乎了,反正使用BRK和MALLOC和各种内存池都不会最终的抵制内存碎片,而且系统的SWAP机制很好了,基本上不用管内存碎片的问题(当然,如果你能作出一个不费时间的碎片整理机^_^).
倒是效率问题让我仔细的想了一想:
malloc->AllocHeap->ntdll.dll->int 2e0->brk->内核函数
|----------------------------------|--------------------|
ring3 ring0
这样malloc就要多费一遍穿过ring0的时间(但我没有ntdll.dll源代码,不知道这个库到底聪不聪明?),这就是我反悔的理由,hamma所说的效率问题其实是在这里;而和算法没关系,最终的brk系统调用无非就是改一下段限(堆限)的大小,所以根本不浪费时间,时间全浪费在保护切换上了.
但UNIX就不同,在那个系统可以直接调用brk系统调用,所以就不要用malloc了,还是UNIX好啊. |
|