我们程序中的变量大多被分配在内存的两个区域:
statck
和
heap
。
stack
和
heap
首先让我们一起来回顾一下进程的内存分配:
我们写的程序代码跑起来后,会是一个进程;OS会给我们的进程分配内存;内存结构大致如下:
OS给一个进程分配的内存空间大致可以分为:
代码区
、
全局数据区
、
栈(stack)
、
堆(heap)
、
环境变量区域
以及中间空白的
缓冲区
六个部分。其中,数据的增长路径除
栈(stack)
是由高到低之外,其余的均是由低到高(可看图中数据箭头)。
我们思考一下,为什么
栈(stack)区
这么特殊和其他区域路径相反?还有,进程内存中
stack
和
heap
和数据结构中的
stack
和
heap
名字都相同,是有什么联系吗?请带着问题往下看:
进程内存中的
stack
和