C语言开发对内存使用有区域划分,分别是栈区、堆区、全局&静态区、文字常量区、程序代码区。注意此处的栈、堆名称有别于数据结构中栈与堆的概念。栈与堆的英文名分别为stack与heap。
栈区:
在函数中定义的变量存放的内存区域。
常见的int、float、char等变量均存放于栈区中,它的特点是由系统自动分配与释放,不需要程序员考虑资源回收的问题,方便简洁。
ps:栈区的地址分配是从内存的高地址开始向地地址分配。
堆区:
程序员通过指令自主向系统申请的内存区域,大小由程序员决定,它在使用完后同样需要程序员通过指令去释放该区域内存,否则将有可能出现内存的浪费与溢出。
C语言中申请堆区指令为:
int *p = (int *) malloc( N * sizeof(int) ); //分配N个int型(4字节