栈Stack:
每个进程在产生之后,OS会自动给这个进程分配一个存储进程中参数,局部变量,返回值的内存空间。这部分内存空间叫做栈。这个内存空间是固定大小的。所以在递归的时候,我们不断调用函数本身,就会在栈中不断添加函数的传入参数,局部变量,返回值。当调用函数次数非常多时,会沾满整个栈的空间,造成 stack overflow的错误。
堆Heap:
如果在进程中需要创建别的容器(比如创建一个数组),那么这个数组所占用的空间是从堆中划分的。
简单来记,一个函数中,除了new出来的容器,其他东西都是存在栈中。