存储器 |
header 2 |
栈区 |
系统自动分配,由程序自动创建、自动释放。函数参数、局部变量以及返回值等信息都存在其中 |
堆区 |
使用自由,不需要预先确定大小。多少情况下需要程序员手动申请、释放。如果不释放,程序结束后有操作系统垃圾回收机制收回。例如,s = (char *)malloc(10), |
静态区/全局区 |
全局变量和静态变量的存储区域。程序结束后由系统释放 |
常量区 |
用于存放常量的内存区域 |
代码区 |
存放代码 |
例如:
#include <stdio.h>
int quanju;/*全局变量,全局区/静态区(static)*/
void fun(int f_jubu); /*程序代码区*/
int main(void)/**/
{
int m_jubu;/*栈区(stack)*/
static int m_jingtai;/*静态变量,全局区/静态区(static)*/
char *m_zifum,*m_zifuc = "hello";/*指针本身位于栈。指向字符串"hello",位于文字常量区*/
void (*pfun)(int); /*栈区(stack)*/
pfun=&fun;
m_zifum = (char *)malloc(sizeof(char)*10);/*指针内容指向分配空间,位于堆区(heap)*/
pfun(1);
printf("&quanju : %x/n",&quanju);