内存初步基础介绍怕【ok】

1. 首先先得了解一下内存。内存是用来存储数据的,内存里面分为三个部分:栈区,堆区和静态区。

524ea6db756b4adfb7eabc67402ec3f4.png

堆区先知道有这么一回事就ok了,主要是动态内存分配,如malloc,calloc,free,realloc,目前也不懂就了解一下,栈区里面放局部变量,函数参数等等,反正都是临时的变量,都是进入作用域创建,出了作用域就销毁/释放。静态区里面放全局变量与静态变量。放在静态区的数据创建后直到程序结束后才会释放。

2. 内存是计算机上的一种存储介质,存储空间,比如内存有4G,6G,8G,内存用处:程序运行的时候会载入到内存,程序中如果有数据需要存储,也会开辟/申请一个内存空间用来存储数据。

3.那么还如何有效使用与管理内存呢?先想象一个一个场景:比如说有一栋楼,这栋楼有一个个房间,每个房间都有自己的编号。而事实上计算机内存也差不多,计算机将内存划分为一个个小的内存单元,同时对其进行编号,这样子就能有效管理内存。在空间划分实践中,一个内存单元的大小为1字节,每个内存单元都有编号(内存编号),内存编号也可以称为地址,在C语言中地址也称为指针。                   内存编号=内存单元的地址=指针

尤其注意:一个字节是八个比特,相当于八个二进制位,也就是说是两个十六进制位

4.如果要访问一个内存单元,那么得依托内存编号,那内存编号/内存单元的地址/指针是如何产生的呢?也就是说到底是怎么样来命名这个内存单元编号/地址/指针呢?

5.以32位机器为例(电脑有32与64位之分),这个物理机器有32根地址线,如果电脑的地址线通电,就会有电信号(高电频或者低电频),这些电信号会转化为数字信号(0/1),因此:一根地址线-----一个电流信号-----一个数字信号(0或1),32根地址线合在一起就会有32比特位的二进制序列,这样子的话电信号转化为数字信号有2^32种二进制序列,定义一个二进制序列为一个内存单元的编号/地址/指针,因此这样下来总共有2^32个地址,就可以管理2^32个内存单元=2^32个字节的内存空间=4GB的内存空间。

6596ab0446524dc3b443b44df4409233.png

一些小注意点

1.%p是专门用来打印地址的

2.%zd是专门打印sizeof()的返回值的,sizeof返回的单位是字节,返回的是变量所占内存(单元)的大小。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

絕知此事要躬行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值