“池化技术” - 深度剖释底层内存管理细节,明晰“池化技术”内存管理技术_内存池化


💡本章重点

  • 认识并了解C/C++的内存分布

  • 深入并剖析C与C++中的动态内存管理

    • 了解池化技术中的内存管理技术
    • 认识operator new函数
    • 认识operator delete函数
  • 了解“定位new”的概念

  • 认识内存泄漏的危害


🍞一.C/C++内存分布

💡内存分布:

在这里插入图片描述

👆以上就是内存划分示意图,我们可发现:

  • C/C++中程序内存区域划分又称为:虚拟进程地址空间
  • 栈区:又称为堆栈,函数调用建立栈帧,栈帧主要存储非静态局部变量、函数参数、返回值等等【栈一般是有规定大小的,Linux下栈区一般是8M
  • 内存映射段:是高效的I/O映射方式,用于装载一个共享的动态内存库
  • 堆区:用于程序运行时动态内存分配,Eg:malloc、calloc、new……【堆区一般有接近2G的空间】
  • 静态区:存储全局数据和静态数据
  • 常量区:存储常量、程序编译出的指令(即在程序执行语句的时候,都会调用这里的指令去依次执行)

👉让我们来重点关注动态内存的管理方式吧~


🍞二.动态内存管理

💡动态内存管理方式:

  • 对于C语言来说:malloc、calloc、realloc、free

  • 这里便涉及一道面试题:malloc/calloc/realloc的区别?

    • malloc就是在堆区上申请动态开辟空间
    • calloc就是在malloc的的功能基础上,对已开辟的空间初始化成0,等价于malloc + memset
    • realloc是针对已有的空间进行扩容(原地扩容 or 异地扩容)
  • 而对于C++来说,C语言内存管理方式仍然可以在C++中可以继续使用,但因为C语言在有些地方使用起来比较麻烦且无能为力

  • 于是C++提出了自己的管理方式:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值