Linux中C程序的存储空间布局 & C++的五大存储空间

来源:互联网 发布:mac实用软件推荐 编辑:程序博客网 时间:2024/06/06 23:54

Linux中C程序的存储空间布局

可以从《APUE》上面摘得下图所示,即为Linux中C程序的存储空间布局情况。

从低地址到高地址依次分为五大部分

1.正文段。即为代码段,它存储的是CPU执行的机器指令,这部分是共享的,即存储其中只有正文段的一个副本。另外,正文段一般都是只读的,防止程序意外修改其指令。

2.初始化数据段(数据段)。这段存储空间主要存放的是全局作用域中明确赋初值了的变量。

3.未初始化数据段(BSS段)。这段存储空间主要存放的是全局作用域中没有明确赋初值的变量,在程序开始执行之前,内核将这段中的数据初始化为0或者空指针。

4.堆(heap)。堆通常用于动态存储分配,是从低地址往高地址方向增长。

5.栈。局部变量以及每次函数调用时所需要保存的信息存放在栈区,每次函数调用都会新建一个新的栈帧,因此,每个函数调用的过程都是单独,不会互相影响,除了static变量之外。栈是从高地址向低地址方向增长。

我们可以通过一个实例来深入了解一下:


0 0
原创粉丝点击