自己写的内存池Slabs

来源:互联网 发布:网络学校有哪些专业 编辑:程序博客网 时间:2024/05/01 19:58

看memcached的源码写的,虽然很粗糙,但是基本思想还是有的,自娱自乐,后期不断改进。

#include <stdio.h>#include <stdlib.h>#include <string.h>struct st{    void * start;    void * end;    char ptr[10];};struct it{    struct it* prev;    struct it* next;    int key;    int value;    int used;};void add(struct it* t,const int data){    while(t->next)    {        if(!t->used){        t->value=data;        t->used=1;        return;        }        t++;    }}void del(struct it* t,const int data){    while(t->next)    {        if(t->used&&t->value==data){        t->used=0;        t->value=0;        return;        }        t++;    }}main(){void * slabs=malloc(200);struct st* pst;struct it* pit;int i,k1,k2,k3;memset(slabs,0,200);pst=(struct st*)slabs;pit=(struct it*)(pst+1);    pit->prev=0;    pit->key=1;    pit->value=0;    pit->used=0;for(i=1;i<10;i++){    pit=pit+1;    pit->key=i+1;    pit->value=0;    pit->used=0;    pit->prev=pit-1;    pit->prev->next=pit;    pit->next=NULL;}pit=(struct it*)(pst+1);k1=11;k2=22;k3=33;add(pit,k1);add(pit,k2);add(pit,k3);del(pit,k2);return 0;}