go返回局部变量指针 是因为 有GC机制
go除了用new 外 基本上存在栈上 (当然也不绝对,编译器会优化处理)
c++ 因为 函数内的局部变量因为分配在栈上 函数执行完毕 会自动回收 导致出现野指针
所以局部变量指针是否可以返回更多取决于运行环境是否有GC机制
【 在 milksea 的大作中提到: 】
: 一个反例就是go,它是值类型且有指针,但数据在概念上都是堆中存储的,栈上变量存储是靠编译器做逃逸分析优化而来的。所以go可以随意返回一个局部变量或临时结构体的指针,效果和new一样,这在其他语言都显得奇怪。
--
FROM 124.127.76.*