为了账号安全,请及时绑定邮箱和手机立即绑定

一个简单的 Go 程序的高内存使用率

一个简单的 Go 程序的高内存使用率

Go
智慧大石 2021-06-10 18:37:06
Codechef 中最简单的问题是从输入读取并写入到输出,只要数字不是 42。我写了以下代码:package mainimport "fmt"func main() {        var num int8        fmt.Scanln(&num)        for ; num != 42; fmt.Scanln(&num) {                fmt.Println(num)        }}它被接受,但根据站点使用 124.6M 内存。我用 C 写了基本相同的东西,花了 1.6M,我很困惑。你知道是什么原因造成的吗?我是 Go 的新手。这可能是一个大胆的错误。
查看完整描述

1 回答

?
MMTTMM

TA贡献1869条经验 获得超4个赞

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

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


查看完整回答
反对 回复 2021-06-21
  • 1 回答
  • 0 关注
  • 207 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信