malloc底层实现原理

malloc()是c语言中用于动态分配内存的核心函数。

一、核心实现机制

malloc的实现依赖操作系统提供的内存管理机制,主要通过两种系统调用获取内存:

1.brk/sbrk---小内存分配

通过brk系统调用调整进程数据段heap的边界 sbrk(n)会将堆顶指针向上移动n字节 返回旧的堆顶指针作为分配内存的起始点

特点:小内存分配---通常小于128KB 分配内存位于堆区 释放后需等待相邻内存块全部释放才能归还给操作系统

2.mmap---大内存分配

通过mmap系统调用向操作系统申请一段虚拟内存空间 映射到物理内存或者是磁盘交换区

特点:大内存分配---通常大于128KB 分配内存独立于堆区 通过私有匿名映射方式 从文件映射区分配一段内存 释放后立即归还给操作系统

 malloc()分配的是虚拟内存,分配的虚拟内存没有被访问的时候,虚拟内存不会映射到物理内存,这样不会占用物理内存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值