【C指针day1】-内存与类型

**1.1 内存与类型:**
1.1.1类型
   内存用于存储指令和数据。是以二进制方式存储信息的单元,存储容量取决于底层硬件或体系结构以及位长(1、2、4、8、32、64或128位)。

在这里插入图片描述
Cache:用于临时存储一些常用数据的高速内存。
主存:也称物理内存,存储将要执行的指令和数据,操作系统和某些进程也会占用一定的主存。
1.1.2 内存排列:
呈线性序列排列,每个位置对应一个存储数据位置的地址。
1.2 数据和指令:
运行程序时,加载器首先加载程序到内存中,被加载程序称为进程,由操作系统进行加载。
编译过程链:
①预处理:扩展源程序中指定宏的过程,生成.i文件。
②编译:将预处理文件编译成汇编文件,生成.s文件。
③汇编:将汇编语言源文件转换成目标代码,生成.o文件。
④链接:将有关的目标文件彼此相连接。
1.3 使用分段的内存排列:
源代码编译后被分成五个主要部分–代码、数据、BSS、栈和堆。
1.3.1代码段:包括指令代码。具有读和运行权限。
1.3.2数据段:包括全局变量和非零值初始变量,以及静态分配的变量和非零值初始化变量。
1.3.3BSS段:所有未初始化的全局变量,以及用static关键字声明且未初始化的静态全局变量。运行同一程序的每个进程都有各自的数据段,该部分的初始化过程在进程启动过程中完成。程序启动过程中需要初始化的任意变量都可以存放在这里。
1.4栈段:存储局部变量、函数参数和返回地址。(返回地址是CPU返回函数调用后继续运行的内存地址)。
1.5堆段:创建进程时堆区由操作系统分配给每个进程。动态内存从堆中获取,调用malloc()、calloc()、realloc()函数分配动态内存。从堆分配的内存仅能通过指针访问。调用free()函数将内存归还给堆。使用堆内存易于实现数据结构如链表和树。若使用不当,可能会导致内存泄露。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值