码迷,mamicode.com
首页 > 编程语言 > 详细

02. C++核心编程

时间:2020-01-02 18:27:03      阅读:82      评论:0      收藏:0      [点我收藏+]

标签:运行   变量   只读   其他   数值   代码   静态   数据   目的   

1. 内存分区模型

  C++程序在执行时,将内存大方向划分为4个区域:

    代码区:存放函数体的二进制代码,由操作系统进行管理的

    全局区:存放全局变量和静态变量以及常量

    栈区:由编译器自动分配释放,存放函数的参数值,局部变量等

    堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收

  内存4区的意义:

    不同区域存放的数据,赋予不同的生命周期,给我们更大的灵活编程

  1.1 程序运行前

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

    代码区:

      存放CPU执行的机器指令

      代码区是共享的,共享的目的是对于频繁被执行的程序,只需要在内存中有一份代码即可。

      代码区是只读的,使其只读的原因是防止程序意外地修改了它的指令。

    全局区:

      全局变量和静态变量存放在此

      全局区还包含了常量区,字符串常量和其他常量也存放在此。

      该区域的数据在程序结束后由操作系统释放。

    总结:

      C++ 中在程序运行前分为全局区和代码区

      代码区特点是共享和只读

      全局区中存放全局变量、静态变量、常量

      常量区中存放const修饰的全局常量和字符串常量

  1.2 程序运行后

    栈区:

      由编译器自动分配释放,存放函数的参数值,局部变量等

      注意事项:不要返回局部变量的地址,栈区开辟的数据由编译器自动释放

    堆区:

      由程序员分配释放,若程序员不释放,程序结束时由操作系统回收

      在C++中只要利用new在堆区开辟内存

  1.3 new 操作符

02. C++核心编程

标签:运行   变量   只读   其他   数值   代码   静态   数据   目的   

原文地址:https://www.cnblogs.com/ccczf/p/12134323.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!