1 #include <iostream>
2 #include <sys/mman.h>
3 #include <unistd.h> // int getpagesize(void);
4 #include <stdlib.h>
5 #include <stdio.h>
6
7 int main(int argc, const char * argv[]) {
8
9 //申请内存
10 int* arr = static_cast<int*>(mmap(
11 NULL, //分配的首地址
12 getpagesize(), //分配内存大小(必须是页的整数倍, 32位1页=4k)
13 PROT_READ | PROT_WRITE, //映射区域保护权限:读|写
14 MAP_ANON | MAP_SHARED, //匿名映射(不涉及文件io), 后面两个参数忽略
15 0, //要映射到内存中的文件描述符
16 0 //文件映射的偏移量,通常设置为0,必须是页的整数倍
17 ));
18 long sz = sysconf(_SC_PAGESIZE);
19 printf("mem size:%ld\n", sz);
20 printf("申请内存大小=%ldk\n", sizeof(arr));
21
22 *arr = 10;
23 *(arr + 1) = 20;
24 *(arr + 2) = 30;
25
26 printf("arr[2]=%d\n", arr[2]);
27
28 //释放指针arr指向的内存区域,并制定释放的内存大小
29 munmap(arr, getpagesize());
30
31 return 0;
32 }