博主做了两年的程序员了看网上的文章有时候各种迷惑,今天终于弄明白了这四个词之间的关系,由于之前是写C++的,之后又写了C#所以就各种迷茫.一下是正确答案:
C++:
堆:(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。它与数据结构中的堆是两回事,分配方式类似链表.
栈:(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
.net/C#:
堆:C#中一般叫做托管堆,就是C++中的堆
栈:C#中一般就叫"堆栈",就是C++中的栈,其实"堆栈"这个名字真的很让人误解,老以为它是在描述笼统的概念.