社区
C语言
帖子详情
c语言的全局域空间是如何实现的?
zeloas
2007-03-06 06:14:08
c语言的全局变量是如何存储的?
存储全局变量的空间大小是固定的还是动态分配的?为什么?
如果是动态分配的,那么一般有多大?
...全文
356
7
打赏
收藏
c语言的全局域空间是如何实现的?
c语言的全局变量是如何存储的? 存储全局变量的空间大小是固定的还是动态分配的?为什么? 如果是动态分配的,那么一般有多大?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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: #include2: #include3: int i = 2;4: int main(void)5: {...
什么是
C语言
中的命名
空间
?
尽管
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 "变量名"来导入,注意,汇编中如果直接使用"mov eax,变量名"表示的是将该变量的地址移入eax,若想取得该变量的值请使用[变量名]
C语言
全局
变量的优缺点我们老师...
C语言
全局
变量,局部变量及其存储类别(关键字),作用
域
本次详细讲解了变量的相关知识,干货多多
C语言
70,024
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章