C/C++程序内存空间问题(面试必备)

        在面试C/C++相关的工作时,经常会被问到这么一个问题,如下:C/C++程序运行时,内存空间有哪几种类型,各自的作用是什么?

程序生命周期与内存空间类型

        要了解程序的内存空间分布情况前,需要简单认识下一个程序从启动到结束,到底经历了哪些阶段。在不同的阶段,不同的内存空间会经历不同的状态。

        程序的运行大概经历了四个阶段:程序加载阶段-》程序初始化阶段-》动态内存分配(函数调用)阶段-》程序结束阶段

        在这几个阶段,内存空间可以分为4种类型,分别是:代码区(共享段)、数据区(全局和静态区)、栈区、堆区,其中栈和堆合并起来也叫动态区

        下图简单显示了程序生命周期各阶段与各存储空间的相互关系。

C/C++程序内存空间问题(面试必备)_第1张图片

代码区Text Segment Code Segment

作用:存放CPU执行的机器指令。通常,代码区是只读的,以防止程序意外地修改了它的指令。在程序启动时,会将程序运行代码拷贝一份存在内存的代码区中(实际就是各个函数的入口)。

特点:多个进程中的代码段是共享的,因此代码段也称为共享段。

数据区(Data Segment

你可能感兴趣的:(c++,#,C/C++面试题,c++,面试,开发语言)