在C中初始化内存分配器



我正在尝试实现一个init_allocator()函数,该功能初始化了内存分配器,并使_length字节的一部分可用。分配器使用_basic_block_size作为其最小分配单位。该功能返回分配器可用的内存量。如果发生错误,它将返回0

这是我到目前为止所拥有的:

int memAvail;  // amount of memory to be made available to allocator
unsigned int init_allocator(unsigned int _basic_block_size, unsigned int _length){
    if (_basic_block_size < _ length){
        memAvail = _length/_basic_block_size;
        return memAvail;
    }
    else{           
        return 0;
    }   
}

我不知道这是否是正确的实现,但对我来说似乎是正确的。我做错了吗?我应该使用指针吗?任何建议都将不胜感激。

这是kernighan和ritchie

的第5.4章的示例内存分配器
#include<stdio.h>
#define ALLOCSIZE 10000 
static char allocbuf[ALLOCSIZE]; 
static char *allocp=allocbuf; 
/* Return pointer to n characters */
char *alloc(int n)
{
   if(allocbuf+ALLOCSIZE-allocp>=n){
       // It fits 
       allocp+=n;
       return allocp-n;
   }else 
       // Not enough room
       return 0;
}

allocbuf是存储信号的内存缓冲区,因为这是炭分配器。*alloccp是指向下一个自由位置的指针,最初是allocbuf的第一个(即0th)元素。*alloc返回一个指针,转到allocbuf中的第一个位置,该程序将存储n字符。

这可以很容易地将其转换为其他数据类型,它演示了可能的简单分配器设计的原理。澄清您的要求,我可以添加内容。

相关内容

  • 没有找到相关文章

最新更新