C++基础-程序4区

C++核心编程(四区)

内存分区模型

C++中程序在执行时,将程序大方向分为4个区域

  • 代码区:存放函数体的二进制代码,由系统操作进行管理
  • 全局区:存放全局变量,静态变量和常量
  • 栈区:由编译器自动分配和释放,存放函数的参数值字,局部变量等
  • 堆区:由程序员分配和释放,若程序员不释放,则程序结束时由操作系统回收

程序运行前

代码区:

  • 存放CPU执行的机器指令
  • 代码区时共享的,共享的目的是对于频繁被执行的程序,只需要有一份代码即可
  • 代码区只读,防止意外的修改

全局区:

  • 全局变量、静态变量(static)存放在这里
  • 全局区还包含了 常量区 字符常量和替他常量(const全局)也存放再此
  • 该区的数据在程序结束后由操作系统释放

程序运行后

栈区:

  • 由编译器自动分配释放,存放函数的参数值,局部变量等
  • 不要返回局部变量的地址
  • 栈区开辟的数据由编译器自动释放
  • 先进后出,后进先出

堆区

  • 由程序员分配数据,若程序员不释放,程序结束后由系统回收
  • 再c++中主要用new再堆区中开辟内存
  • 先进先出出,后进后出

拓展—new操作符的使用

c++中利用new操作符在 堆区开辟数据

new返回的是该数据类型的指针(地址)

释放堆区的操作:利用操作符:delete

基本语法

int * p = new 数据类型(一个数据);
delete p; //释放

int * arr = new int[10]; //数组
arr[i]; //引用数组
delete[] arr;
posted @ 2022-04-19 11:17  T,a,o  阅读(144)  评论(0编辑  收藏  举报