Linux内存映射函数mmap与匿名内存块
在Linux中,mmap
函数用于内存映射文件到进程的地址空间,也可以用来创建匿名内存映射(不映射到文件),即创建匿名内存块。
以下是一个使用 mmap
创建匿名内存映射的简单例子:
#include <sys/mman.h>
#include <stdio.h>
#include <stdlib.h>
int main() {
// 创建匿名内存映射,大小为1MB
void *addr = mmap(NULL, 1024 * 1024, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_SHARED, -1, 0);
if (addr == MAP_FAILED) {
perror("mmap failed");
return 1;
}
// 使用内存
printf("Memory mapped at address: %p\n", addr);
// 清理内存映射
if (munmap(addr, 1024 * 1024) == -1) {
perror("munmap failed");
return 1;
}
return 0;
}
这段代码创建了一个大小为1MB的匿名内存块,并映射到进程的地址空间。然后使用这块内存,最后通过 munmap
函数来取消内存映射并释放资源。
请注意,mmap
函数的参数可能会根据不同的平台和版本有所不同,上面的例子适用于大多数类Unix系统。
评论已关闭