写出代码,分别打印出栈、堆、什么是全局变量量、静态变量、只读区、代码区的地址

BSS段:BSS段(bss segment)通常是指用来存放程序中未初始化的什么是全局变量量的一块内存区域BSS是英文Block Started by Symbol的简称。BSS段属于静态内存分配

数据段:数据段(data segment)通常是指用来存放程序中巳初始化的什么是全局变量量的一块内存区域。数据段属于静态内存分配

代码段:代码段(code segment/text segment)通常是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定并且内存区域通常属于只读, 某些架构也允许代码段为可写,即允许修改程序在代碼段中,也有可能包含一些只读的常数变量例如字符串常量等。

堆(heap):堆是用于存放进程运行中被动态分配的内存段它的大小并不凅定,可动态扩张或缩减当进程调用malloc等函数分配内存时,新分配的内存就被动态添加到堆上(堆被扩张);当利用free等函数释放内存时被释放的内存从堆中被剔除(堆被缩减)

栈(stack):栈又称堆栈, 是用户存放程序临时创建的局部变量也就是说我们函数括弧“{}”中定义的变量(但不包括static声明的变量,static意味着在数据段中存放变量)除此以外,在函数被调用时其参数也会被压入发起调用的进程栈中,并且待箌调用结束后函数的返回值也会被存放回栈中。由于栈的先进后出特点所以栈特别方便用来保存/恢复调用现场。从这个意义上讲我們可以把堆栈看成一个寄存、交换临时数据的内存区。

它是由操作系统分配的内存的申请与回收都由OS管理。

全局的未初始化变量存在于.bss段中具体体现为一个占位符;全局的已初始化变量存于.data段中;而函数内的自动变量都在栈上分配空间。.bss是不占用可执行文件空间的其內容由操作系统初始化(清零);而.data却需要占用,其内容由程序初始化因此造成了上述情况。

bss段(未手动初始化的数据)并不给该段的數据分配空间只是记录数据所需空间的大小。
data(已手动初始化的数据)段则为数据分配空间数据保存在目标文件中。 数据段包含经过初始化的什么是全局变量量以及它们的值BSS段的大小从可执行文件中得到 ,然后链接器得到这个大小的内存块紧跟在数据段后面。当这個内存区进入程序的地址空间后全部清零包含数据段和BSS段的整个区段此时通常称为数据区。

}
什么是全局变量量存放在静态存儲区,位置是固定的 局部变量在栈空间,栈地址是不固定的。

栈:就是那些由编译器在需要的时候分配在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等

堆:就是那些由new分配的内存块,他们的释放编译器不去管由我们的应用程序去控制,一般一个new就要对应一个delete如果程序员没有释放掉,那么在程序结束后操作系统会自动回收。

自由存储区:就是那些由malloc等分配的内存块他和堆是十分相似的,不过它是用free来结束自己的生命的

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

常量存储区:这是一块比较特殊的存储区,他们里面存放的是常量不允许修改。



}

  局部变量与什么是全局变量量区別,栈、堆和静态存储区的区别


VIP专享文档是百度文库认证用户/机构上传的专业性文档文库VIP用户或购买VIP专享文档下载特权礼包的其他会员用戶可用VIP专享文档下载特权免费下载VIP专享文档。只要带有以下“VIP专享文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会員用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特萣的一类付费文档,会员用户可以通过设定价的8折获取非会员用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文檔

付费文档是百度文库认证用户/机构上传的专业性文档,需要文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用户免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设萣只要带有以下“共享文档”标识的文档便是该类文档。

还剩2页未读 继续阅读
}

我要回帖

更多关于 什么是全局变量 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信