第19课:深入内存管理,定制自己的内存管理系统

C/C++ 程序具有强大而灵活的内存操作能力,而要驾驭这种强大的能力,要求开发者具有与之匹配的内功。对内存使用不当,很容易造成非常严重的后果。

在 C/C++ 开发中,经常遇到的比较头痛的内存使用问题有内存泄漏、内存重释放和内存溢出。在本节课中,我们就来重点讨论 Linux 应用的内存管理,并在现有内存管理机制的基础上,进一步讨论这几种常见内存使用问题的调试功能的实现思路,主要包括以下几方面内容:

  • 内存管理概述
  • 开始前的思考
  • 扩展调试功能的实现思路
  • 替换库函数

19.1 内存管理概述

系统中的内存管理可以分为两层。

  • 在内核层:内存管理系统为系统中运行的所有进程服务统筹规划物理内存的映射和分配,并管理交换分区及处理缺页中断,等等。

  • 在应用层:内存管理系统则负责管理单个进程拥有的虚拟内存区,比如,用高效的数据结构把所有的堆内存区管理起来,使得进程对不同大小的内存申请和释放请求都能快速而高效地得到满足。同时还要尽量减少内存碎片,从而减少物理内存的占用总量。

本节课将要讨论的是在应用层上的内存管理。

然而,应用层的内存管理本身也是个非常复杂的话题。在《第13课:活用内存映射与虚拟内存,让应用更高效》一节中,我们已经了解过,动态分配的内存开辟在进程的堆区,堆区内存的来源有两部分:

  • 一部分是由 brk 系统调用分配出来的连续空间;
  • 另一部分是使用
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符 “速评一下”
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付 49.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值