linux内存池代码
时间: 2023-11-12 15:56:45 浏览: 56
这里是一个简单的 Linux 内存池代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#define POOL_SIZE 1024
typedef struct {
int size;
char data[POOL_SIZE];
} mem_block;
mem_block* pool = NULL;
int pool_index = 0;
void* my_malloc(int size) {
if (pool == NULL) {
pool = (mem_block*)malloc(sizeof(mem_block));
pool->size = POOL_SIZE;
}
if (size > POOL_SIZE) {
return malloc(size);
}
if (pool_index + size > POOL_SIZE) {
return NULL;
}
void* ptr = &pool->data[pool_index];
pool_index += size;
return ptr;
}
void my_free(void* ptr) {
// do nothing
}
int main() {
int* p1 = (int*)my_malloc(sizeof(int));
*p1 = 42;
char* p2 = (char*)my_malloc(10);
sprintf(p2, "hello");
printf("%d %s\n", *p1, p2);
return 0;
}
```
这个内存池的实现非常简单,它使用一个静态的内存块作为内存池,当需要分配内存时,它会从内存池中分配一段连续的空间,并返回指向这段空间的指针。如果内存池中的空间不足,它会返回 NULL。当需要释放内存时,它什么也不做,因为这个内存池是静态的,无法释放。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)