操作系统上的栈

主要是指有操作系统自动管理的内存空间

当进入一个函数,操作系统会为该函数中的局部变量分配存储空间。事实上,系统会分配一个内存块,叠加在当前的栈上,并利用指针指向前一个内存块的地址。函数的局部变量就是存储在当前的内存块。

当该函数返回时,系统“弹出”内存块,并且根据指针回到前一个内存块。所以,栈总是后进先出(LIFO)的方式工作。通常,在栈上分配的空间不需要用户操心。

操作系统上的堆

是用来存储动态分配变量的空间。

程序员可以选择随时分配或回收内存,这意味着程序员需要用命令回收内存,否则会产生内存泄漏。(python有自动的垃圾回收机制)。