内存池是一种常用的内存分配机制,它可以有效地管理内存分配和回收。
内存池的基本原理是,在程序运行时,先将一块固定大小的内存分配给内存池,然后在程序中需要分配内存的时候,就从内存池中申请内存。当程序使用完该内存块后,会将其归还给内存池,供其他部分使用。这样,就可以避免频繁地调用系统内存分配函数,提高程序效率。
下面是一个简单的内存池的代码示例,使用 C 语言实现:
``` #include <stdio.h> #include <stdlib.h> #include <string.h>
#define POOL_SIZE 10000 // 内存池大小
char memory_pool[POOL_SIZE]; // 内存池 char *current_position = memory_pool; // 当前内存池分配位置
// 从内存池中申请内存 void *pool_alloc(size_t size) { if (current_position + size > memory_pool + POOL_SIZE) { // 内存池空间不足,无法分配 printf("Out of memory\n"); exit(1); } void *result = current_position; current_position += size; return result; }
// 将内存归还给内存池 void pool_free(void *p) { // 这里不做任何操作,因为内存池中的内存不会被释放 }
int main() { int *p1 = pool_alloc(sizeof(int)); *p1 = 123; printf("%d\n", *p1);
char *p2=