c++ 程序的内存分配

C++程序在执行时,将内存大致分为以下几个区域:

  1. 栈:系统自动分配的空间,只要不特殊声明,就定义在栈区,函数的区域也在栈上。栈是向下增长的。(const 在栈里)
    堆:使用动态内存分配的方式可以申请堆空间,用完要手动释放。new malloc
    全局区:全局变量、静态变量(static),生命周期是程序整个运行过程中。
    常量区:代码中的数字,字符等常量,例如’a’,—1.2等
    代码区:存放可执行代码,避免频繁的读硬盘

这四个区域的意义在于,不同的区域存放不同的数据,赋予不同的生命周期,给程序员更大的操作空间。

在程序编译后,生成了.exe可执行文件,未执行该程序前分为两个区域:

  • 代码区:存放CPU执行的机器码。
  • 数据区:存放已初始化的全局和静态变量,常量数据(如字符串常量)。

 

 
posted @ 2023-12-08 20:00  ponder776  阅读(8)  评论(0编辑  收藏  举报