由 fmt.Printf 引发的 a==c 结果不一致的诡异问题

sotoup · · 817 次点击
<a href="/user/yigenshutiao" title="@yigenshutiao">@yigenshutiao</a> 受教了 非常感谢
#2
更多评论
1. Printf 第二个参数是interface类型,导致内存逃逸到堆上 ``` func Printf(format string, a ...interface{}) (n int, err error) { return Fprintf(os.Stdout, format, a...) } ``` 2. 结构体长度为0,导致变量使用全局变量地址 ``` func mallocgc(size uintptr, typ *_type, needzero bool) unsafe.Pointer { ... if size == 0 { return unsafe.Pointer(&amp;zerobase) } ... } // base address for all 0-byte allocations var zerobase uintptr ```
#1