如下图所示,是虚拟内存的结构图
例子:定义一个结构体struct
struct Node
{
int data;
struct Node *next;
}Node;
struct Node *p=NULL;
操作:p->data或者p->next时,结果就会崩溃。因为0是不可访问的空间。
.text段称为指令段。
.data段和.bss段都称为数据段。区别是:data段存储的是全局的已初始化且不为0的数据,而bss段存储的是全局的未初始化或者初始化为0的数据。
#include <stdio.h>
int gdata1=10;//全局变量 .data段
int gdata2=0;//全局变量 .bss段
int gdata3;//全局变量 comment段(对外可见)
static int gdata4=11;//静态全局变量 .data段
static int gdata5=0;//静态全局变量 .bss段
static int gdata6;//静态全局变量 .bss段(对外不可见)
int main()
{
int gdata7=12;//局部变量 .text段
int gdata8=0;//局部变量 .text段
int gdata9;//局部变量 .text段
static int gdata10=13;//静态局部变量 .data段
static int gdata11=0;//静态局部变量 .bss段
static int gdata12;//静态局部变量 .bss段
return 0;
}