Linux下内存管理函数

内存管理API

#include <unistd.h>
void *sbrk(intptr_t increment)
increment
0 获取未分配前的内存首地址(也就是已经分配内存的尾地址)
大于0 增加内存空间
小于0 释放内存空间
返回值:未分配前的内存首地址,以字节为单位。

int brk(void *addr)
功能:设置未分配内存的首地址
返回值:成功0,失败-1

它们背后维护着的一个指针,该指针记录的是未分配的内存的首地址(当前堆内存的最后一个字节的下一个位置)。它们都可以用来映射内存和取消映射(系统级的内存管理),但为了方便起见,sbrk一般用于分配内存,brk用于释放内存。
注意:sbrk/brk分配和释放的都是使用权,真正的映射工作由其它系统调用完成(mmap/munmap)。

#include <sys/mman.h>

void *mmap(void *addr, size_t length, int prot, int flags,int fd, off_t offset);
功能:把虚拟内存与物理内存或者文件建立映射关系
addr:要映射的虚拟内存地址, 如果为NULL操作系统会自动选择一个虚拟地址与物理内存映射。
length:要映射的字节数
flags:映射标志
prot: 权限
fd:文件描述符(与内存映射没有关系)
offset:文件映射偏移值
返回值:映射成功后的虚拟内存地址,失败返回0xffffffff。

int munmap(void *addr, size_t length);
功能:取消映射
addr:需要取消映射的内存首地址
length:需要取消映射的字节数
返回值:成功0,失败-1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值