社区
C语言
帖子详情
c语言的全局域空间是如何实现的?
zeloas
2007-03-06 06:14:08
c语言的全局变量是如何存储的?
存储全局变量的空间大小是固定的还是动态分配的?为什么?
如果是动态分配的,那么一般有多大?
...全文
353
7
打赏
收藏
c语言的全局域空间是如何实现的?
c语言的全局变量是如何存储的? 存储全局变量的空间大小是固定的还是动态分配的?为什么? 如果是动态分配的,那么一般有多大?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jixingzhong
2007-03-06
打赏
举报
回复
如果需要更进一步了解,
建议楼主看看 编译原理 ~
^_^
jixingzhong
2007-03-06
打赏
举报
回复
计算机理解力是没法和我们相比的,但是它比我们快。我们可以把这些变量分开来放,从不同地方取来的就是不同的变量。告诉计算机去找的就是符号表。当然,生成符号表是编译器的事,我们不用管。但是了解一点总是有好处的。这里我以Unix ELF (Executalbe and Linkable Format)格式文件为例说明编译器是怎么安排全局变量,静态变量和自动变量的位置的。
ELF可重定位目标文件包括:ELF头以及.text,.rodata, .data ,.bss ,.symtab, .rel.text, .rel.data 等节。
全局变量:已初始化的保存在.data段中 ,未初始化的表示为.bss段的一个占位符;
静态变量:根据是否初始化分别在.data 和.bss段中分配空间;
自动变量(非静态局部变量):在运行时保存在栈中。既不在.data 段中也不在.bss段中。
其实我们可以编写一个简单的程序,编译了以后用objdump命令查看。
知道了各种变量在运行时的位置也就知道了他们的储存期,而且了解变量的位置对编写高性能程序也非常有帮助。
我们知道嵌入式对程序的性能要求是非常高的,函数的参数列表越长那么函数调用的开销就越大,这个时候我们可以使用全局变量提高程序的性能。
将函数和变量声明为static可防止函数和变量被其它模块不正确的使用。
关于自动变量,请看下面的两个程序:
long product;
void factorialA(long n)
{
long i;
for(i = 1; i <= n;i++ ){
product *= i;
}
void factorialB(long n)
{
long i;
long x = 1;
for(i = 1; i <= n;i++ ){
x *= i;
}
product = x;
}
在n值较大的时候,上面两个程序的性能是有显著差别的。 这是利用了程序的局部性原理
jixingzhong
2007-03-06
打赏
举报
回复
动态也是可以地吧,定义全局的指针变量,然后malloc,以前的c可能不行
=================================
那就是只有指针是 全局的,
指向的空间不是全局的(虽然是全局有效,但是只要是动态分配的就都是全局有效的)
jixingzhong
2007-03-06
打赏
举报
回复
全局变量被存储在数据段,大小自然是静态的,也就是你定义的大小。
happytang
2007-03-06
打赏
举报
回复
http://community.csdn.net/Expert/topic/5359/5359624.xml?temp=.8627283
happytang
2007-03-06
打赏
举报
回复
全局变量最好还是静态分配,大小就是固定地;
动态也是可以地吧,定义全局的指针变量,然后malloc,以前的c可能不行
看系统内存能承受多大了,几十M我也申请过
goodluckyxl
2007-03-06
打赏
举报
回复
全局变量看你自己申请了
可以固定可以不固定啊
没有经验值 看你自己需要了
有些程序可能开个1-10k就够了
有些则需要1-10m
c语言
中局部变量存放在哪里,
C语言
全局
变量存放在哪里?
全局
变量的作用
域
是从
全局
变量定义的位置到本源文件结束都有效。我们先看一下
全局
变量在反汇编中是怎么体现的,如示例示例代码CH07_3_4。#include#includeint i = 2;int main(void){int j = i;return 0;}1: #include...
什么是
C语言
中的命名
空间
?
尽管
C语言
没有显式的命名
空间
概念,但通过作用
域
、静态变量、文件作用
域
、命名约定、结构体和头文件等方法,开发人员可以有效地组织和管理标识符的名称,以避免名称冲突并提高代码的可维护性。选择合适的方法取决于...
c语言
引用定义变量,如何在
c语言
中定义及引用
全局
变量?
如何在
c语言
中定义及引用
全局
变量?答案:5信息版本:手机版解决时间 2019-10-03 10:30已解决2019-10-02 15:19如何在
c语言
中定义及引用
全局
变量?最佳答案2019-10-02 16:051、
全局
变量也称为外部变量,它是在函数外部...
c语言
全局
变量(
c语言
全局
变量怎么定义)
菜鸟提问:GCCE编译环境下,汇编函数如何使用C
全局
变量汇编化了 首先要在C程序中用extern申明该变量为
全局
变量,再在汇编程序中用extern "变量名"来导入,注意,汇编中如果直接使用...
C语言
全局
变量的优缺点我们老师...
不符合
c语言
表达式,
C语言
的基本语法有哪些?,已知各变量的类型说明如下,则以下不符合
C语言
语法的表达式是...
,已知各变量的类型说明如下,则以下不符合
C语言
语法的表达式是
C语言
的基本语法有哪些?,已知各变量的类型说明如下,则以下不符合
C语言
语法的表达式是 想寻求这个问题的答案,谁能帮忙解答一下,小弟在此先谢谢大神们...
C语言
69,371
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章