网络编程中,在接收和发送数据时,需要频繁分配内存。网络编程在服务端,通常要求高效率和长时间稳定运行。如果用new/delete分配和回收内存,肯定不能满足要求。大家一起讨论下这块,有经验的同学可以提自己的方案,其他同学也可提自己的意见。

解决方案 »

  1.   

    结帖率:12.50%办法很多,看你的要求,你只说不能频繁NEW/DELETE,太笼统了
      

  2.   

    开辟比最大包长大两倍的缓冲区,接收满数据处理,然后再接收,而不能new/delete
      

  3.   

    不知道有没有同学在参考ACE,apache等的内存管理
      

  4.   

    可以参考一下STL里面的内存分配方式
      

  5.   

    申请一块大内存,然后自己去管理这块内存的分配,运行中发现不够了,再申请一块大大的内存,再去管理,这样new 和delete的工作你来做,想怎么做就怎么做
      

  6.   

    这个就是内存池,高性能网络服务器必备
    一般IOCP是主框架,内存池是必要处理手段
      

  7.   

    尽量复用内存,而不是频繁new/delete。
    如果不得不这样设计,可考虑内存池。
    new/delete在管理小块内存时效率极差,此时可以考虑自己实现分配器,或者用第三方库,如loki的小对象内存分配器。
      

  8.   

    使用内存池避免重复的new/delete