内存地址是存在哪里的?
内存是用来存数据的,它有地址,地址是一个16进制的数,每个地址可以存1个字节的数据。
问题:
1、这个16进制的地址是谁给它的,是操作系统给它的,还是生产的时候给它写进去的?
2、这个地址存储在什么地方,是存储在一个什么芯片里面吗?
3、内存是怎么存储一个变量的,比如string a=‘hello’;
一般听到的就是开辟了一块内存空间,把hello
存进去,完了。不太明白的是,这个语句一共有6个元素:
1、string
2、a
3、=
4、‘’
5、hello
6、;
hello
存到内存了,那其他5个元素也肯定存到内存了,他们存到内存后怎么关联起来呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
编译原理
少年,我看你骨骼惊奇,是个学CS的料,这本编译原理链接就送给你了。
不存在其它 5 个元素。这是源代码,只存在于你的文本编辑器里面,确切的说是你的硬盘里,当编译器把源码编译为目标代码时,这些就已经不存在了。
你这个问题包括了
编译原理
和数字电路
.我不太懂编译原理,但是数字电路还是懂点.
一般语言里字符串类型在内存中都是连着放的,记录开始和结束地址.
那么这些字符串其实是存在电路中的,电路中只能存0和1,0是低电平,理解成不通电,1是高电平,理解成通电.你所说的16位地址也就是16个01的组合.当cpu要访问这个地址的时候,会给内存的16个引脚以上的地址,内存芯片会在引脚中输出你要访问的字符编码.
看这本好一点
深入理解计算机系统
cpu有个东东叫寄存器,地址都存放在那
如 32位的CPU可以代表4G(2的32次方)的地址,当程序变量寻址就会通过该寄存器找到地址。去看csapp吧,系统帮你回答你想知道的事。
1、编译时先有一个语法分析的过程,把各个关键词、语句的逻辑关系理清楚放进一个树结构里,这时就不需要:冒号,分号,括号,空格这些东西了:
2、引号 " 使编译器知道这是字符串,于是编译器把 "" 里面的 hello 转化为对应的数字编码:6800 6500 6C00 6C00 6F00,这时不再需要引号:
3、string 变成一个二进制命令,作用是在内存上划出一块符合 string 长度的块,并把该块的<起始地址、终止地址、数据长度>存到寄存器里。现在电脑可以通过地址来识别这个变量,通过长度来读取数据,所以就不需要变量名 a 和类型名 string 了。
4、等号 = 变成一个二进制命令,按寄存器的数据找到对应的内存块,并根据语法关系把 hello 的编码写进该块内存。
【全体阵亡】