- 内存区域的划分:
 32位OS可以访问的虚拟内存空间为0~4G;- 一、内核空间:
 3~4G;- 二、用户空间
 0~3G;- 栈区:
局部变量在栈区分配、由OS负责分配和回收 - 堆区:由程序员手动分配(
malloc函数)和回收(free函数); - 静态区:
 .bss段:未初始化的全局变量或者使用static修饰的未初始化的全局变量或者局部变量;.data段:初始化的全局变量或者使用static修饰的初始化的全局变量或者局部变量;.rodata段:顾名思义“read only”,只读数据段,例如字符串常量;.text段:存放代码段;- 存储类型为const的变量注意事项:
 const可以修饰普通类型的变量,也可以修饰指针类型的变量,还可以用来修饰函数的形参和返回值;- 其
修饰的全局变量存储在.rodata段,不可以被修改,通过指针的方式也不可以被修改,定义常量时,必须在定义时进行初始化; - 其
修饰的局部变量在栈区分配空间,不可以通过常量的变量名本身进行修改,But可以通过指针修改使用const修饰的局部变量; - 示例代码:
 
 
	#include <stdio.h>#include <stdlib.h>#include <string.h>int a;  int b = 999;    const int c = 666;  static int d;   static int e = 555; char a1[128];   char a2[128] = "I Love China!!!";   char *p;   char *q = "I LIKE U!!!";    void var_init(){int a;  int b = 999;    const int c = 666;  printf("c = [%d]\n",c);int *m = &c;*m = 99;printf("*m = [%d]\n",*m);printf("c = [%d]\n",c);static int d;   static int e = 555; char a1[128];   char a2[128] = "I Love China!!!";   char *p;   char *q = "I LIKE U!!!";    printf("a= [%d]\n",a);printf("b= [%d]\n",b);printf("d= [%d]\n",d);printf("e= [%d]\n",e);printf("a1[0] = [%d]\n",a1[0]);printf("a2 = [%s]\n",a2);printf("p = [%p]\n",p);puts("----------------------------------------------------------");p = (char *)malloc(sizeof(char));     printf("*p = [%d]\n",*p);printf("p = [%p]\n",p);puts("----------------------------------------------------------");free(p);p = NULL;printf("p = [%p]\n",p);puts("----------------------------------------------------------");printf("q = [%s]\n",q);}int main(int argc, char const *argv[]){printf("a= [%d]\n",a);printf("b= [%d]\n",b);printf("c= [%d]\n",c);printf("d= [%d]\n",d);printf("e= [%d]\n",e);printf("a1[0] = [%d]\n",a1[0]);printf("a2 = [%s]\n",a2);printf("p = [%p]\n",p);p = (char *)malloc(sizeof(char));     printf("*p = [%d]\n",*p);free(p);p = NULL;printf("p = [%p]\n",p);printf("q = [%s]\n",q);puts("************************************************************");var_init();return 0;}
 
 
	a= [0]b= [999]c= [666]d= [0]e= [555]a1[0] = [0]a2 = [I Love China!!!]p = [(nil)]*p = [0]p = [(nil)]q = [I LIKE U!!!]************************************************************c = [666]*m = [99]c = [99]a= [0]b= [999]d= [0]e= [555]a1[0] = [-128]a2 = [I Love China!!!]p = [0xe37732c0bf8d7700]----------------------------------------------------------*p = [0]p = [0x564b6b388670]----------------------------------------------------------p = [(nil)]----------------------------------------------------------q = [I LIKE U!!!]