澳门太阳集团2007com网站(中国)有限公司

澳门太阳集团2007com网站【www.3ucase.cn】
资讯
工控澳门太阳集团2007com网站厂家分享:总结:关键字static的使用方法
来源:迈肯思科技 发布时间:2021-06-20
       

粉丝提问

粉丝问题,总结一下:关键字static的使用方法。

问题

要想搞清楚关键字static的使用方法,必须首先搞清楚,可实行程序段的分类以及各段在内存区的逻辑地址的映射。

本文配套视频,请见次条文章《【视频讲解】C语言static关键词》

一、可实行程序内存分配

1. 可实行程序程序分段

一个程序的3个基本段:text段,data段,bss段

BSSBSS(Block Started by Symbol)通常是指用来存放程序中未初始化的全局变量和静态变量的一块内存区域。

特点是:可读写的,在程序实行之前BSS段会自动清0。

所以,未初始的全局变量在程序实行之前已经成0了。

注意和数据段的区别,BSS存放的是未初始化的全局变量和静态变量,数据段存放的是初始化后的全局变量和静态变量。

UNIX下可使用size命令查看可实行文件的段大小信息。如size a.out。

数据段.data存放在编译阶段(而非运行时)就能确定的数据,可读可写。

也就是通常所说的静态存储区,赋了初值的全局变量和赋初值的静态变量存放在这个区域,常量也存在这个区域。数据段,代码段在程序运行之前就已经确定了的。

代码段.text代码段通常是指用来存放程序实行代码的一块内存区域。

这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读, 某些架构也允许代码段为可写,即允许自修改程序。

在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等。

text段在编译时确定,内存中被映射为只读,但date段与bss段是可写的。

2. c语言五大内存分区栈区(堆栈区stack)

堆栈是由编译器自动分配释放,存放函数的参数和局部变量的值(auto类型),操作方式类似于数据结构中的栈。栈的申请是由系统自动分配,如在函数内部申请一个局部变量int h,同时判断所申请空间是否小于栈的剩余空间,如果小于则为其开辟空间,为程序提供内存,否则将报异常提示栈溢出。

澳门太阳集团2007com网站【www.3ucase.cn】
工控澳门太阳集团2007com网站 服务器澳门太阳集团2007com网站 工业澳门太阳集团2007com网站

澳门太阳集团2007com网站|澳门太阳集团2007com网站

XML 地图 | Sitemap 地图