内存管理函数

相关函数: malloc

头文件   #include <stdlib.h>

函数原型: void *malloc(size_t size);

函数说明: 分配内存

返回值   成功返回分配的内存的首地址

           失败返回NULL

相关函数: free

头文件   #include <stdlib.h>

函数原型: void free(void *ptr);

函数说明: 释放内存,参数ptr为函数malloc返回的指针,调用freeptr所指向的内存会被系统回收。

返回值  

相关函数: mmap(内存映射)

头文件   #include <unistd.h>

           #include <sys/mman.h>

函数原型: void mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset);

函数说明: mmap用来将某个文件映射到内存中,通过对内存的读写实现对文件的操作。

           参数含义如下:

           start  : 指向映射后的内存起始地址,通常设为NULL,表示让系统来选定映射地址。操作成功后,start里的值为映射后的内存首地址。

           length : 指定文件中被映射的部分的长度,以字节为单位。0表示全部映射。

           prot  : 映射区域的使用方式,有以下选项

                  PROT_EXEC    映射区域可被执行

                  PROT_READ    映射区域可被读取

                  PROT_WRITE   映射区域可被写入

                  PROT_NONE    映射区域不能存取

           flag  : 设置映射区域的属性,有以下选项

                  MAP_FIXED    如果start指定的地址无法映射,则放弃映射

                  MAP_SHARED  对映射区域的修改会复制回文件,而且允许其他映射该文件的进程共享

                  MAP_PRIVATE  不会影响被映射的文件

                  MAP_ANONYMOUS  建立匿名映射,不涉及文件,无法和其他进程共享

                  MAP_LOCKED  将映射区域锁住

           fd   :  文件描述符,代表要映射的文件

           offset:  文件映射的偏移量。通常设置为0,代表从文件开始处映射,offset

必须是分页大小的整数倍

返回值  

相关函数: munmap 

头文件   #include <unistd.h>

           #include <sys/mman.h>

函数原型: int munmap(void *start, size_t length);

函数说明: 取消参数start所指向的映射内存。当进程结束时,内存映射会自动取消,但关闭对应的文件描述符不会取消映射

返回值   0 :操作成功

           -1:操作失败,错误原因存于errno

posted @   cnetsa  阅读(61)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示