内存池的意义就是一次分配比较大的内存空间,然后以后都在里面分配小的空间,加快内存分配速度,但我用boost好像发现boost的内存池有点问题.boost::pool<>p(1024*3000); //分配了3M的空间
char * a=(char *)p.malloc();
p.free(a);
怎么我分配了3M空间,但发现系统的内存多用了200M(不是程序的内存),是怎么回事呢?有用过boost内存池的朋友吗?

解决方案 »

  1.   

    boost::pool <>p(1024*3000);  //分配了3M的空间 
    char * a=(char *)p.malloc(); //这个地方您没有指定分配的内存长度默认为内存池最大长度。
    p.free(a); 
      

  2.   

    t.ordered_malloc(n)  Same as above, only allocates enough contiguous chunks to cover n * requested_size bytes. Amortized O(n).
    且boost::pool <>p(1024*3000); //指示说明pool每个block为3M
    char * a=(char *)p.malloc();  //告诉pool分配一个block
      

  3.   

    boost::pool <>p(1024*3000); //分配了3M的空间 
    p.ordered_malloc(10)
    char * a=(char *)p.malloc(); 
    一样是分配200m的内存,怎样限制它分配的最大长度呢?