golang中变量回收销毁的一个问题

ddxx11223 · · 3826 次点击
所以是go compiler在运行前就发挥了作用,还是GC在运行时介入发挥了作用?
#4
更多评论
lzh2nix
a man, a coder, a runner
建议看下 the Go programming language 2.3.4 这里举得例子都和你这个差不多。 “A compiler may choose to allocate local variables on the heap or on the stack but, perhaps surprisingly, this choice is not deter mined by whether var or new was used to declare the variable” 这里的f肯定是分配在heap上的,goroutine运行完之后发现还有global的变量引用,就不会销毁的。
#1
楼上说得对. C++中分配在栈上的内存当然不能这样写, 但是 go compiler 会分析你分配在栈上的方式是不是合适的, 如果不合适它会帮你分配到堆上.
#2