编程语言书籍中经常解释值类型被创建在栈上,引用类型被创建在堆上,但是并没有本质上解释这堆和栈是什么。我仅有高级语言编程经验,没有看过对此更清晰的解释。我的意思是我理解什么是栈,但是它们到底是什么,在哪儿呢(站在实际的计算机物理内存的角度上看)?
在通常情况下由操作系统(OS)和语言的运行时(runtime)控制吗?
它们的作用范围是什么?
它们的大小由什么决定?
哪个更快?
编程语言书籍中经常解释值类型被创建在栈上,引用类型被创建在堆上,但是并没有本质上解释这堆和栈是什么。我仅有高级语言编程经验,没有看过对此更清晰的解释。我的意思是我理解什么是栈,但是它们到底是什么,在哪儿呢(站在实际的计算机物理内存的角度上看)?
在通常情况下由操作系统(OS)和语言的运行时(runtime)控制吗?
它们的作用范围是什么?
它们的大小由什么决定?
哪个更快?
6 回答3.6k 阅读
3 回答3.3k 阅读✓ 已解决
1 回答1.3k 阅读
1 回答1.2k 阅读
919 阅读
1 回答505 阅读
抛砖引玉答一下:
图中在上面的为栈,下面为堆。
int a = 3
,int *p = (int *)malloc(42)
中,a位于栈,p位于堆。修订:看,真的抛砖引玉了耶 o(╯□╰)o
看评论里的http://stackoverflow.com/questions/79923/what-and-where-are-the-stack-and-heap
还有对应的翻译哦
http://www.perfect-is-shit.com/what-and-where-are-the-stack-and-heap.html