我看到了这个问题,但它只是说明了我想要做什么,而不是解释如何去做。
我有一个C
库,它将在支持动态内存分配的系统以及不支持动态内存分配的系统上运行。我想通过编写自己的malloc
函数来简化系统之间的转换,该函数在堆不可用时从静态数组分配内存。
我不是在寻找一个完全充实的解决方案来解决我的问题,但是带有示例的博客文章会有所帮助。确定何时以及何时不使用malloc
很容易。但是我花了一些时间来弄清楚如何从静态数组中分配内存。
static char my_memory[10000] = { 0 };
static void *my_malloc(size_t size) {
// Here, I want to allocate 'size' in 'my_memory'.
return NULL;
}
static void *my_free(void* memory) {
// Here, I want to free 'memory' from 'my_memory'.
}
编辑:
在这里,我的需求非常简单,并且将以这种方式分配的内存很少(并且很少释放)。Steve Jessop 的简单解决方案非常适合。