彻底理解操作系统 3.2:程序员应如何理解内存

本文深入探讨了内存的基本概念,从硬件角度解释内存是存储0和1的单元,介绍了C/C++的内存模型,特别是堆区和栈区的使用。栈区变量在函数调用结束后自动释放,而堆区需要程序员手动管理内存,未释放会导致内存泄漏。文章通过示例代码展示了函数调用中栈帧的创建和销毁,强调了堆和栈在内存管理上的差异,并预告了对Java和Python内存模型的讨论。
摘要由CSDN通过智能技术生成

什么是内存

0和1这两个简单的数字能做什么?在其它学科中也许什么都做不了,但是在计算机科学中这就是全部。精彩纷呈的计算机世界正是构筑在这样两个简单数字之上。

内存本身其实非常简单,内存的作用就是用来装数字0和数字1的,如图所示,图中的一个盒子就是内存的一个基本单元,装的不是0就是装的1。

img

内存由一大堆的“盒子”组成,每个盒子中要么是0要么是1,其中8个盒子被称之为一个“字节”,每8个盒子也就是一个字节都有一个编号,这些编号就是简单的从0开始依次累加的,这个编号就被称之为“内存地址”。如图所示,你可以把内存理解为下面这张图,其中左边的数字是内存地址,每一排是一个字节,图中展示的就是一个8字节大小的内存。

img

而对于我们平时使用的比如2G、4G甚至8G大小的内存来说,只不过就是“盒子”多一点能装的01多一点而已,本质上和我们在这里展示的8字节大小的内存没有任何区别。

在后面的章节中我将用右图来表示内存,但是你的大脑里一定要有左图这样一个概念。当计算机在执行我们的程序时,无论是我们的机器指令还是机器指令操作的数据,都需要存放在这些小盒子中(内存)。

img

以上就是从硬件角度来看内存,那么从编程语言上来看,程序员应该如何理解内存呢?

 

C/C++内存模型

对于C/C++程序员来说,常用的int,char等变量都被装在盒子中,char值只需要一排盒子就能装下(8bit),一个int值一般需要四排盒子才能装得下。连续几排装有同样类型变量的

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值