一个反例就是go,它是值类型且有指针,但数据在概念上都是堆中存储的,栈上变量存储是靠编译器做逃逸分析优化而来的。所以go可以随意返回一个局部变量或临时结构体的指针,效果和new一样,这在其他语言都显得奇怪。
【 在 nextworld8 的大作中提到: 】
: 其实大部分语言无论在语言层面如何定义,本质上来说就是数据是存在堆还是栈的问题。
: 一般存在栈的就是值类型,内存空间存的值。 堆一般都是动态分配的内存,那么变量对应的空间(分配在栈)存的是堆内对象地址相当于桥接。
: 可以操作指针语言分的很清楚 ;不能操作指针的都是隐含的引用,编译器负责实现
: ...................
--
FROM 114.249.211.*