这段代码安全吗?b在if块结束时被取消范围,但a仍然指向b的内存地址。在这个简单的示例中,它似乎可以工作(它打印正确的值),但是在语言规范中,这将始终有效?使用 -m 编译以检查编译器优化,它说b不会逃逸到堆中。游乐场:http : //play.golang.org/p/ZzYkMg6FqBpackage mainimport "fmt"func main() { a := new(int) *a = 10 if *a > 0 { b := 5 a = &b } fmt.Println(*a)}
- 3 回答
- 0 关注
- 179 浏览
添加回答
举报
0/150
提交
取消