内存管理函数
相关函数: malloc
头文件 : #include <stdlib.h>
函数原型: void *malloc(size_t size);
函数说明: 分配内存
返回值 : 成功返回分配的内存的首地址
失败返回NULL
相关函数: free
头文件 : #include <stdlib.h>
函数原型: void free(void *ptr);
函数说明: 释放内存,参数ptr为函数malloc返回的指针,调用free后ptr所指向的内存会被系统回收。
返回值 : 无
相关函数: 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中
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)