问题是内存如何与低级别的值类型一起工作。假设我们创建了一个变量
var first = 5
,原来我们会将值存储在堆栈中,并在代码中将地址存储在堆栈中的位置(偏移量)。让我们声明第二个变量
var second = first
低级初始化将如何进行?让我们通过堆栈上的偏移量来取值?如果我犯了任何错误,请纠正我。如果您发送有关此主题的书籍/文章,我也将不胜感激
问题是内存如何与低级别的值类型一起工作。假设我们创建了一个变量
var first = 5
,原来我们会将值存储在堆栈中,并在代码中将地址存储在堆栈中的位置(偏移量)。让我们声明第二个变量
var second = first
低级初始化将如何进行?让我们通过堆栈上的偏移量来取值?如果我犯了任何错误,请纠正我。如果您发送有关此主题的书籍/文章,我也将不胜感激
一般来说,你正确地理解了它是如何工作的。编译器知道所有局部变量的数量和大小。对于每个变量,它将确定其在堆栈帧中的偏移量。之后,编译器将不再使用对象访问,而是使用堆栈上的偏移量。在过程开始时,将创建将初始值写入局部变量地址的操作。在某些情况下,编译器可能会认为为变量分配一个寄存器就足够了,以免与 RAM 一起工作。您可以在任何有关编译器的教科书中阅读它。