C++动态内存分配/malloc/new

0 前言

这部分确实是面试老八股了,不过我还是记录一下

1 内存分区

在C语言中,将内存分为程序代码区+数据区,其中数据区又分为静态存储区动态存储区

在C++中,分为五种:

  1. 动态存储区:
  • 栈区:存放局部变量,由编译器自动分配释放,程序员不能操作
  • 堆:由程序员使用malloc/new申请,用free/delete释放。如果程序员忘记释放,程序运行结束后,由OS进行回收
  1. 全局存储区/静态存储区:存放全局变量和静态变量
  2. 常量存储区:存放常量,比如字符字面量
  3. 程序代码区

2 栈与堆

  1. 栈空间有限,由操作系统规定大小,分配速度极快,但是程序员控制不了它的分配与释放
  2. 堆空间由程序员自由决定所分配的大小,理论上物理内存多大你就可以要多大。分配速度慢,但是灵活

3 malloc/new

  1. 在C语言中,malloc是系统提供的函数,只有一种功能,就是申请所需大小内存
  2. new和delete是一种运算符,不是函数!不是函数!
  3. new相比malloc,除了分配内存,还有其他更加复杂的功能(待完善),所以建议使用new,而不是malloc
posted @ 2024-04-16 10:22  wenli7363  阅读(25)  评论(0编辑  收藏  举报