我有一个很愚蠢的问题,但到目前为止我还没能回答。 我开始用 f# 编写一个小程序,只是为了用这种语言进行一些修改,我想到了一个问题:如果我编写一个可以这样总结的代码:
let a = 10
let b = a
口译员将如何处理记忆?它会在堆栈中创建第二个空间,其中包含变量
b
的 10 还是仅指向变量 a
的同一内存?
我尝试运行这个简单的代码:
printf "before: %A\n" (GC.GetTotalMemory false)
let a = 10
printf "after: %A" (GC.GetTotalMemory false)
//output
before: 72903520L
after: 72911712L
还有其他代码:
printf "before: %A\n" (GC.GetTotalMemory false)
let a = 10
let b = a
printf "after: %A" (GC.GetTotalMemory false)
//output
before: 73000992L
after: 73009184L
由于差异很大,我不确定我选择的函数是否正确,因此我不知道如何解释这个结果。