关于堆及内存分配点滴

本文探讨了堆内存管理的基础概念,包括堆与栈的区别、堆内存的动态分配机制、以及操作系统如何通过brk()和mmap()系统调用来实现对虚拟内存空间的管理。此外,还介绍了用户空间内存管理的基本原理,例如malloc/free函数的工作机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于堆及内存分配点滴

1. 无论是堆,还是栈都是对虚存的操作和管理。

2. 系统调用brk()和mmap()用来动态分配虚存空间,也就是表明这些虚存地址是合法的,访问的时候,系统应为其分配物理内存,而不是报错。

3. 堆的本质是动态申请的虚存空间。理论上可以用任何方式去管理这块空间。但数据结构--"堆"是最常用的一种,所以这块分配的空间常称为被堆。

4. 和栈不一样,堆的管理是在用户函数库中进行,malloc/free等函数是堆的入口。

5. 每次分配的内存块大小都会被记录下来,释放的时候只需要指定要释放的内存地址就行了。这就是为什么malloc的时候要指定大小,free的时候不用。

6. 堆和栈一样,仍然使用了物理内存的延迟分配策略。

原文

http://www.cnblogs.com/moodlxs/articles/2346826.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值