【发布时间】:2018-12-08 13:10:44
【问题描述】:
我有一段简单的代码,我为int8、int16、int32 和int64 类型分配内存并打印出变量的地址:
package main
import (
"fmt"
"runtime"
)
func main() {
fmt.Println(runtime.Compiler, runtime.GOARCH, runtime.GOOS)
var i8 *int8
var i16 *int16
var i32 *int32
var i64 *int64
fmt.Println(&i8)
fmt.Println(&i16)
fmt.Println(&i32)
fmt.Println(&i64)
}
这是我收到的输出:
gc amd64 darwin
0xc00008a020
0xc00008a028
0xc00008a030
0xc00008a038
从这里我可以得出结论,只有int16 使用了 4 个字节,其他类型使用了 8 个字节。
我的推理和检查分配内存大小的方法是否正确?
如果是,在 64 位架构系统上使用 int8、int32 有什么好处?
【问题讨论】:
-
@peterSO 是的,你是对的!将其更改为实际值 - 返回一个更有希望的结果:gc amd64 darwin 0xc000076018 0xc00007601a 0xc00007601c 0xc000076030
标签: go