相关文章  
  • 下一代开源技术的结晶――FedoraCore6
  • qmail+vpopmail+sqwebmail的安装步骤(上)
  • Linux操作系统下双启动环境的陷阱问题(下)
  • 在Linux环境中如何配置WU-FTP服务器(1)
  • 在Linux环境中如何配置WU-FTP服务器(2)
  • Linux系统编程之C++游戏程序优化(5)
  • Linux操作系统内核对RTC的编程详解(2)
  • 双赢协议:微软为何将不会攻击Linux
  • Linux系统PDA软件开发环境的构建(1)
  • 超线程加快Linux操作系统的速度(下)(4)
  •   推荐  
      科普之友首页   专利     科普      动物      植物        天文   考古   前沿科技
     您现在的位置在:  首页 >>文献 >>培训

    Linux系统编程之C++游戏程序优化(3)2

    进行,而C++则还可以通过构造临时对象和成员变量来隐式的分配内存。很多C++游戏程序需要自己的内存管理程序。 由于C++游戏程序要执行很多的分配,所以要特别小心堆的碎片。一个方法是选择一条复杂的路:要么在游戏开始后根本不分配任何内存,要么维护一个巨大的连续内存块,并按期释放(比如在关卡之间)。在现代机器上,如果你想对你的内存使用很警惕的话,很严格的规则是没必要的。

    第一步是重载new和Delete操作符,使用自己实现的操作符来把游戏最经常的内存分配从malloc定向到预先分配好的内存块去,例如,你发现你任何时候最多有10000个4字节的内存分配,你可以先分配好40000字节,然后在需要时引用出来。为了跟踪哪些块是空的,可以维护一个由每一个空的块指向下一个空的块的列表free list。在分配的时候,把前面的block移掉,在释放的时候,把这个空块再放到前面去。图1描述了这个free list如何在一个连续的内存块中,与一系列的分配和释放协作的情形。

    你可以很容易的发现一个游戏是有着许多小小的生命短暂的内存分配,你也许希望为很多小块保留空间。为那些现在没有使用到的东西保留大内存块会浪费很多内存。在一定的尺寸上,你应当把内存分配交给一支不同的大

    页码:[1] [2] [3] [4] [5] [6] [7]2页、共7页

         

          设为首页       |       加入收藏       |       广告服务       |       友情链接       |       版权申明      

    Copyriht 2007 - 2008 ©  科普之友 All right reserved