0

Codechef 中最简单的问题是读取输入并写入输出,只要数字不是 42。我编写了以下代码:

package main

import "fmt"

func main() {
        var num int8
        fmt.Scanln(&num)
        for ; num != 42; fmt.Scanln(&num) {
                fmt.Println(num)
        }
}

它被接受,但根据站点使用 124.6M 内存。我用C写了基本相同的东西,花了1.6M,我很困惑。你知道这可能是什么原因造成的吗?

我是 Go 新手。这可能是一个大胆的错误。

4

1 回答 1

5

我没有检查,但我怀疑您的程序使用了 124+ MB 的内存。我不知道你从哪里得到这个数字,但我猜你混淆了分配的虚拟内存和“已用内存”。这两个数字可能彼此接近或不接近。

Go 通过操作系统保留了一个很大的内存区域,但在 Go 运行时实际进一步分配之前,它不是“已用内存”。在大多数系统上,无人认领的虚拟内存不需要实际内存,因此基本上是免费的。

于 2013-07-20T14:30:02.767 回答