gpt4 book ai didi

c - 修改同一内存地址上的值如何会删除以前的值? "OVERWRITTEN concept on PC' s模式操作”

转载 作者:行者123 更新时间:2023-11-30 16:11:52 25 4
gpt4 key购买 nike

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

int i=6;
i=7;

那么 i 的值为 7,我知道为什么,因为我们已经将旧值修改了 7,但是 PC 究竟如何删除之前的值呢?我可以相信“以前的值被覆盖,它将被删除”,但我很好奇如何通过分配修改后的值来删除它?

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

最佳答案

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

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

您可以查看使用指针的示例,看看在 int *p = &i; 之后,从 *p 获取的值在执行 后发生了变化i=7; 或者通过 google 搜索有关 C 指针的教程以获取更多详细信息。

<小时/>

这不是“魔法”,只是存储单元在电学上的自然工作方式。例如单个flip-flop可以通过应用输入信号和告诉它忘记其旧值的重置信号来从一种状态更改为另一种状态。

<小时/>

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

<小时/>

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

实际的主内存通常由DRAM组成。 ,其中位作为电荷存储在电容器上。每次读完都得刷新这个费用,不过还是一个固定位置可以写入新值的概念。

关于c - 修改同一内存地址上的值如何会删除以前的值? "OVERWRITTEN concept on PC' s模式操作”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58476157/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com