自动变量类型是指存储于该程序(进程)堆栈空间的一种变量类型(注意此时的堆栈空间并不是汇编语言上的堆栈,只是它的使用及释放类似于堆栈的过程)。这个变量类型的一个特点是它在程序执行时存在,在程序结束时消失。正是这个过程类似于汇编里栈的操作,所以才将其命名(处理)为堆栈。我们平时所定义的INT之类的类型都属于这个范畴,该变量在创建时顺序加入,在消亡时按相反的顺序移除。
堆空间不同于栈空间,它不属于某一个特定的进程,但是可以通过进程里的指针来进行引用(malloc()函数),这部分变量与栈空间变量的区别是它不会自动消亡,需利用free(栈空间里引用其的指针)函数来将其释放。
静态变量,该类型变量在整个程序运行期间都可用,在程序开始时存在,程序结束时终止,所以本质上可以将其认为是栈空间里的类型,但是是栈空间里位置最深的变量。其最先push,最后pop。
上面的理解以后,值类型就相当于栈空间的自动变量类型,其使用分配与释放由编译器完成,引用类型相当于在栈空间存储其指针,堆空间存储其实际数值。注意这里涉及到一个引用空间的释放问题,我们在编程时没有注意,但其实在底层编译的时候已经自动帮我们完成了,