静态区:保存自动全局变量和static 变量(包括static 全局和局部变量)。静态区的内容在总个程序的生命周期内都存在,由编译器在编译的时候分配。

栈:保存局部变量。栈上的内容只在函数的范围内存在,当函数运行结束,这些内容也会自动被销毁。其特点是效率高,但空间大小有限。

堆:由 malloc 系列函数或 new 操作符分配的内存。其生命周期由 free 或 delete 决定。

:lol:以下就是我的瞎扯了:

其实栈就是你自己在函数体里定义并赋值,而堆是在你分配内存后,再给值(就是给内存储存数据)。

而堆可以在这个函数体外调用(指没有被free以前),而栈只能在函数体里调用(栈在函数体结束后会自动销毁,如上文栈的介绍)。

:evil:其实堆和栈就是变量的有效区域吧。。应该吧。。。