这实际上是一个普遍的问题,但是由于我正在使用Go和C#,所以现在发生了。假设我们要从Go中的用户输入中分配一个变量:
func main() {
var input float64
fmt.Scan(&input)
}
很清楚为什么我们需要一个存储位置来放入新值。但是为什么在Java或C#等语言中,我们没有遵循相同的逻辑:
var input = Convert.ToInt32(Console.ReadLine());
// and not &input ...
Java和C#是高级语言,可以抽象出大多数内存管理以及低级语言(例如C)所需的其他特定内容。
在这种情况下,该Console.ReadLine()
函数分配内存以存储控制台输入,并将其复制到input
变量。
由于这些语言具有垃圾回收功能,因此分配和取消分配内存是自动完成的,因此该框架不需要您显式传递要写入的内存地址,也不希望使用完后释放内存。
编辑:
请参阅@kostix评论,以获取对该答案的极大改进。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句