c语言 - 修改同一内存地址上的值将如何删除以前的值? "OVERWRITTEN concept on PC's mode operation"



我是计算机和计算机领域的新手......我正在开发 C 编程,实际上每次我陷入思考如果我们用新值修改旧值时,PC 会如何删除旧值,我的意思是: 让我们假设我像这样在 C 上写

int i=6;
i=7;

那么i的值是7,我知道为什么,因为我们已经将旧值修改了7,但是PC实际上如何删除以前的值?我可以只相信"以前的值被覆盖并被删除",但我很好奇它是如何通过分配修改后的值来删除的?

它像魔术吗? 对我来说仍然很奇怪..一个很好的解释将不胜感激,以说服我一旦我们修改同一内存的地址,PC如何使用覆盖模式操作删除以前的值..

计算机的存储空间是有限的。 它们覆盖该存储。 它不像SSA 模型,其中每个赋值都会创建一个新变量。 计算机确实会改变现有存储位置的值。

C 语言是根据每个变量都有自己的内存位置来定义的。 分配新值不会更改地址。 它不是对新的不可变值的引用,它实际上是在改变存储int i写入新值会隐式销毁变量的先前内容。 它不会任何地方。

您可以查看使用指针的示例,以查看在int *p = &i;后从*p中获得的值在执行后更改i=7;或者谷歌搜索有关 C 指针的教程以获取更多详细信息。


这不是"魔法",只是记忆细胞自然工作的方式。 例如,单个触发器可以通过施加输入信号和复位信号来改变其旧值,从而将单个触发器从一种状态更改为另一种状态。


物理类比是一张带有铅笔和橡皮擦的纸, 而不是一大叠新鲜的索引卡。 "消耗品"(铅笔芯和橡皮擦(只是电力。 (或者更具体地说,CMOS逻辑中的电荷。 其他一些类型的数字逻辑需要电流连续流动,使用大量功率。


CPU 寄存器通常由 SRAM(静态 RAM(组成,请参见 https://en.wikipedia.org/wiki/Static_random-access_memory#Writing。 例如,一个电池通常由 6 个晶体管组成,就像触发器一样,但更漂亮,除非设置新值,否则没有电流流动。 这存储1位,并且可以通过应用写使能信号将SRAM单元更新为其输入行中的值来使用新值写入任意次数。

实际的主存储器通常由DRAM制成,其中位作为电荷存储在电容器上。 每次阅读它时,您都必须刷新此费用,但它仍然是可以使用新值写入的固定位置的相同概念。

相关内容

  • 没有找到相关文章

最新更新