gpt4 book ai didi

memory-management - 如何获取变量的内存大小?

转载 作者:IT老高 更新时间:2023-10-28 13:02:53 26 4
gpt4 key购买 nike

有人知道如何获取变量(intstring[]struct 等)的内存大小并打印出来吗?有可能吗?

var i int = 1
//I want to get something like this:
fmt.Println("Size of i is: %?", i)
//Also, it would be nice if I could store the value into a string

最佳答案

您可以使用 unsafe.Sizeof为此发挥作用。它返回以字节为单位的大小,由您传递给它的值占用。这里是 a working example :

package main

import "fmt"
import "unsafe"

func main() {
a := int(123)
b := int64(123)
c := "foo"
d := struct {
FieldA float32
FieldB string
}{0, "bar"}

fmt.Printf("a: %T, %d\n", a, unsafe.Sizeof(a))
fmt.Printf("b: %T, %d\n", b, unsafe.Sizeof(b))
fmt.Printf("c: %T, %d\n", c, unsafe.Sizeof(c))
fmt.Printf("d: %T, %d\n", d, unsafe.Sizeof(d))
}

请注意,某些平台明确禁止使用 unsafe,因为它是……嗯,不安全的。这曾经包括 AppEngine。不确定今天是否仍然如此,但我想是的。

正如@Timur Fayzrakhmanov 所说,reflect.TypeOf(variable).Size() 将为您提供相同的信息。对于 reflect 包,限制与 unsafe 包相同。即:某些平台可能不允许使用它。

关于memory-management - 如何获取变量的内存大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26975738/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com