程序可以将他所用的内存分为三类:
1.具有外部链接、内部链接以及具有空连接的静态变量
2.自动变量
3.动态分配内存的
静态存储时期变量所需的内存数量,存储在这一部分的数据在整个程序的运行期间都可用。这一类型的每个变量在程序开始的时候就已存在,到程序结束时终止。
自动变量在程序进入包含改变量定义的代码块的时候产生在退出这一代码块时终止,因此伴随的程序对函数的调用和终止,自动变量使用的内存数量也在增加和减少。典型的,将这一部分内存处理为一个堆栈。这意味着在内存中,新变量在创建时按顺序加入,在在消亡时按相反的顺序移除。
动态分配的内存在调用malloc()或相关的函数是产生,在调用free()时释放,有程序员而不是一系列的固定规则控制内存持续时间,因此内存块可在一个函数中创建,而在另一个函数中释放。由于这一点,动态内存分配所用的内存部分可能变成碎片状,也就是说,在活动的内存块之间散布着未使用的字节片。使用动态内存往往导致进程比使用堆栈内存慢。