程序中的变量赋值与访问:探索计算机内存的秘密

91download.com supports a wide range of platforms, including YouTube, Facebook, Twitter, TikTok, Instagram, Dailymotion, Reddit, Bilibili, Douyin, Xiaohongshu and Zhihu, etc.
Click the download button below to parse and download the current video

The video belongs to the relevant website and the author. This site does not store any video or pictures.

当我们在程序中给变量赋值、重新赋值或访问它们时,究竟发生了什么?让我们一起跟踪程序的执行过程,揭开这个谜底。

程序启动:内存的舞蹈

程序开始运行时,计算机将其工作内存中的第一条指令载入。这条指令通常是一个赋值语句。在赋值语句中,左侧是变量名,等号是赋值运算符,右侧是要存储在变量中的值。

赋值语句的背后

计算机首先查看右侧是否有任何表达式需要简化。如果右侧是一个单一的值,比如一个字符串,那么计算机不需要进行任何简化。接下来,计算机会去它的短期内存中寻找与变量名相对应的标签。如果找不到,这意味着计算机还不知道这个变量,它需要为这个新变量分配一块新的内存,并给它贴上标签,以便与其他内存块区分开来。然后,计算机将赋值运算符右侧的值复制到短期内存中的相应位置。

工作内存与短期内存的不同

一旦这个指令执行完毕,计算机就会清空其工作内存,忘记所有这些信息,并继续执行下一行。但值得注意的是,任何存储在短期内存中的信息都会保留下来。

表达式的简化

当我们遇到另一个赋值语句时,如果右侧是一个未简化的表达式,计算机会先将其简化为一个单一的值。这样做是为了让计算机更容易记住这个值,而不是记住一个长的表达式。简化完成后,计算机会在短期内存中寻找变量名对应的标签,如果找不到,就会创建一个新的变量,并分配内存,然后复制值。

访问变量

当我们遇到一个打印指令时,计算机首先会查看括号内是否有表达式需要简化。如果找到变量名,比如gene,并且它不在赋值运算符的左侧,这意味着我们正在访问这个变量的值,而不是设置它。计算机会在短期内存中查找这个变量的标签,找到后,它会跟随这个标签到内存中的位置,并将存储在那里的值代入工作内存中的指令。

自引用赋值语句

当我们遇到一个自引用赋值语句时,比如num_mutations = num_mutations + 1,计算机会首先计算右侧的值。这意味着它会访问num_mutations当前存储的值,将其代入表达式中,然后计算结果。计算完成后,计算机会在短期内存中为这个新的值分配新的内存,并让num_mutations指向这个新位置。

优化的秘密

在某些情况下,我们可能存储的是非常大的值。如果计算机必须多次复制这些大值,会占用大量空间和内存。因此,如果可以避免,计算机更愿意不这么做。它会优化操作,让变量指向相同的内存位置,而不是分配新的内存。

程序的结束

当程序结束时,短期内存会被清空,所有的变量都会消失。这样,计算机就有空间记住下一次运行程序时的新内容了。

通过这篇文章,我们不仅揭示了程序中变量赋值和访问的底层原理,还让我们对计算机内存的工作方式有了更深入的理解。你对计算机的内存管理有什么看法?它如何影响了你对编程的理解?欢迎在评论区分享你的想法。

Currently unrated