ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

C/C++内存分布

2019-09-01 11:03:12  阅读:240  来源: 互联网

标签:初始化 操作系统 32 虚拟地址 C++ bss 分布 内存 空间


 每个程序运行起来以后,它将拥有自己独立的虚拟地址空间。这个虚拟地址空间的大小与操作系统的位数有关系。例如32位硬件平台的虚拟地址空间的地址可以从0~2^32-1,即0x00000000~0xFFFFFFFF,总共4GB大小。在32位Windows操作系统中,高地址的2GB位内核空间,用户空间只有2GB,而32位Linux的内核空间只有1GB,用户空间有3GB大小。而64位操作系统,用户可用空间则要大的多。C/C++程序在虚拟内存中的排布大概如下所示(仅仅列出了相关的主要段):

相关解释:

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

  堆区(heap) : 一般由程序员分配释放, 若程序员不释放,在程序结束时,操作系统回收。

  BSS段(Block Started by Symbol):.bss段被用来存放那些没有初始化或者初始化为0的全局变量。bss段只占运行时的内存空间而不占文件空间。在程序运行的整个周期内,.bss段的数据一直存在

  全局区(静态区):全局变量和静态变量的存储是放在一块的, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 在程序序结束后由系统释放。 

  DATA区(初始化的数据段):为数据分配空间,数据保存在目标文件中

  文字(只读)常量区 :常量字符串就是放在这里的。 程序结束后由系统释放 

  代码段(TXT):存放函数体的二进制代码

 

 

本文章参考相关文章连接:

https://blog.csdn.net/a34140974/article/details/82426859

https://blog.csdn.net/jirryzhang/article/details/79518408

标签:初始化,操作系统,32,虚拟地址,C++,bss,分布,内存,空间
来源: https://www.cnblogs.com/didiaoxiaoguai/p/11441670.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有