1.未初始化的全局变量(.bss段)
用来存放那些没有初始化和初始化为零的全局变量。
2.初始化过的全局变量(.data)
里面存放那些初始化为非零的全局变量。
3.常量数据(.rodata段)
ro代表ready only,rodata就是用来存放常量数据的。在多个进程是共享的,这样可以提高运行空间利用率。
4.代码(.text段)
存放代码和部分整数常量,它与rodata段很像,主要不同在于这个段是可以执行的。
5桟(stack)
桟用于存放临时变量和函数参数。桟作为一种基本数据结构,可以用来实现函数的调用。通常情况下,桟向下(低地址)增长,每向桟中PUSH一个元素,桟顶就向低地址扩展,每从桟中POP一个元素,桟顶就向高地址退回。
6.堆(heep)
堆是最灵活的一种内存,它的使用周期完全由使用者控制。
malloc:用来分配指定大小的内存;
realloc:用来调整/重新分配一块存在的内存。
free:用来释放不再使用的内存。
7.内存分配方式
(1)从静态存储区域分配
(2)在桟上创建
(3)从堆上分配,亦称动态内存分配。
8.宏定义:define
宏定义是由源程序中的宏定义命令完成的。宏替换是由预处理程序自动完成的,在c中,宏分为有参数和无参数两钟。
9.结构体
声明一个结构体类型的一般形式为:
struct 结构体名 {成员表列};
如:struct student
{
int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
} ;