搜索
查看: 1446|回复: 4
打印 上一主题 下一主题

数组首地址的存储位置在哪里?

[复制链接]
跳转到指定楼层
楼主
发表于 2013-9-30 00:26:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5啊哈币
假设 inta[]={1,2,3};那么a作为首个元素的地址,它会存储在哪?除了数组的3*4=12个字节外,还会另外开辟内存存储吗?

最佳答案

查看完整内容

首先,不是所有地址都需要存储的,因为编译器会优化,某些变量的值会直接写成text段中的立即数 然后,变量名是(可以)不存储的,因为CPU根本不理解什么叫变量,所有变量都会被替换成地址 但是ELF可执行文件存储extern scope的符号名,这对正常运行没有影响,只是为了汇编级的debug使用
沙发
发表于 2013-9-30 00:26:24 | 只看该作者
velvetblue 发表于 2013-10-1 20:02
数组名字a,及对应的首地址,当然需要内存空间存储。不过一般不用关心它存在哪个位置。
其实每个变量的名字 ...

首先,不是所有地址都需要存储的,因为编译器会优化,某些变量的值会直接写成text段中的立即数
然后,变量名是(可以)不存储的,因为CPU根本不理解什么叫变量,所有变量都会被替换成地址
但是ELF可执行文件存储extern scope的符号名,这对正常运行没有影响,只是为了汇编级的debug使用
板凳
发表于 2013-9-30 00:53:33 | 只看该作者
1.a 不是首元素的地址,只是在某些语义下编译器将其转化为首地址

2.不会
地板
发表于 2013-10-1 20:02:41 | 只看该作者
数组名字a,及对应的首地址,当然需要内存空间存储。不过一般不用关心它存在哪个位置。
其实每个变量的名字,及其对应的首地址,都是需存储的,变量自身占用的内存,是另外一件事。
5#
发表于 2013-10-7 21:08:51 | 只看该作者
数组名字a,及对应的首地址,当然需要内存空间存储。不过一般不用关心它存在哪个位置。
其实每个变量的名字,及其对应的首地址,都是需存储的,变量自身占用的内存,是另外一件事。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表