什么是内存池?

来源:互联网 发布:股票买卖软件哪个好 编辑:程序博客网 时间:2024/05/03 06:57

最近在正在学习windows编程,老师提到了内存池的概念,很感兴趣,于是便查阅了大量的资料,写下了自己的一点心得。

    我们在使用new/delete操作符的时候,会由用户态进入内核态。    由于从用户态进入内核态会消耗大量的时间(大概1000个cpu时间片)。    如果我们需要频繁的申请内存和释放内存时,那可想而知,效率会比较低。    既然如此,我们为什么不可以事先申请一大片内存,然后让程序的new/delete操作都落在这片内存池中呢?    实现这种功能的技术就是我们所说的内存池了。
malloc函数的超级简单版#include <sys/types.h>#include <unistd.h>void *malloc(size_t size){    void *p;    p = sbrk(0);    //sbrk()需要转入内核态    if (sbrk(size) == (void *)-1)        return NULL;    return p;}

参照:http://blog.codinglabs.org/articles/a-malloc-tutorial.html

0 0