C++基础之内存(通过物理\计算机读写\操作系统来解析)

本文深入探讨了C++内存管理,包括DRAM和SRAM的区别,计算机读写内存的基本单位,操作系统如何分配和保护内存,内存泄漏问题,以及如何最大化利用内存。强调一次性申请内存和减少全局变量使用以提升效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 物理:我们的内存一般用的是DRAM,上面一个电容充电是1,没电是0,(充电放电可不是电脑电源线插入插座这样,高低电频充放,)用不完全导电的硅做电容,让硅掺杂导电,这样就是一个位,存0/1,电脑4G内存,1G是10亿个,电脑里有40亿个,手机也是一样的,内存充放电是有定时器的,充电了时间过了会放电.所以DRAM要便宜,现在普遍用的这个,还有一种,叫做SRAM,叫做静态随机存储,里面是是第二幅一样,优点在于上面电位传进来是1过几亿年都不变,下面输出就是1,中间4个还是6的保持成一种静态,这是相对于DRAM的优点,不用循环充放电,但是缺点也很明显,这么大才构成1个位. 
    
2.计算机读写:计算机读写的最小单位是八位,1个字节
 3.操作系统来看,电脑有4G的内存,操作系统都拿来保护起来,自己用和用户用,用户用得申请,用完不还就内存泄漏,耗完了,用完要还(酒店管理的例子),你申请内存用,操作系统给你一块内存,房客要住,你要般房子要住,给的是地址.
4 .谋杀内存:你一次性向操作系统申请的内存是连续的,而且是你要多少给你多少,给不了就不给,或者是给的了但地址不连续也给失败,那怎么谋杀内存,我申请循环申请1M,在申请10M,最后释放1M的,我问要10M,释放的1M加起来绝对超过10M,但可能给失败了,就是因为这些不连续
5 .最大化利用内存:
 (1)自己要用到多少内存,一次性申请,然后自己有首地址来存储利用,这样运行时候寻找就从我申请的这点地方里面找,不用从整个4G里面从这里跳到那个地址,从那个地址跳到另外一个不想关的地址找了,提高效率了,或者是你用的空间不止一个,你多次的new, new/detele都是很耗费时间的
 (2)内存强度说:提倡少用不用全局,多用局部
                  程序运行10s,我要用1个int变量a存5,我建成全局的,全局的会在运行开始之前存在,程序运行结束关闭,那这样我4个字节*10s,=40byte/s
                  a我建成局部的,函数退出a释放,那这样,函数是程序一部分,运行了3s,那这样我的4个字节*3s=12byte/s,在或者你说我a要多个地方用,用了三次,每次3s,那强度是
                  12byte/s,不管怎么说,除去你写的函数,程序运行的main这些本身的东西都是有时间的,所以局部变量肯定时间强度小于程序周期
————————————————————————————————————————————————————————————————程序周期 10s
    ————————————————————————————————————————————————————成员变量
             ————          ————           ————   局部变量
可以联系玩一下申请int类型空间,里面存了5,地址存为05 00 00 00,当你想存6/7/8的时候,不用在开辟空间,通过地址偏移,05 06 07 08
(PanPen120原创 如有建议 请留言)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值