“计算机动态内存组成”


友友们,今天咱们简单扒一扒计算机的内在的一小部分—-动态内存

首先咱们先看看计算机系统的硬件组成

可以看到,储存器周围很多的数据流与控制流,这就意味着它不单单是一个类似于仓库(当然这个功能是肯定有的)的东西,它的存在与程序的运行密不可分,而这一部分的内存又被叫做动态内存,简单来说它就像是考试时的草稿纸,办公时的办公桌,一些暂时需要的步骤或工具都在里面存放,随时用随时改随时弃,灵活而多变。其实它和手机的运存是一个道理,只不过手机的8g在电脑面前根本不够看。

计算机的动态内存的组成可分为以下几个部分

其中内存四区内容如下

堆区(heap):一般由程序员手动分配释放(动态内存申请与释放),若程序员不释放,程序结束时可能由操作系统回收。

栈区(stack):由编译器自动分配释放,存放函数的形参、局部变量等。当函数执行完毕时自动释放

全局区(global / stack):用于存放全局变量和静态变量, 里面细分有一个常量区,一些常量存放在此。该区域是在程序结束后由操作系统释放。

代码区(code / text):用于存放程序代码,字符串常量也存放于此。

其实从中也不难理解,在编程过程中你的每一个指令,每一个定义的常量与变量都会由电脑在内存中自动分配一块地方来储存转化后的数字码,同时会记录下这个内存的地址以方便之后由电脑或程序员来寻找。同时储存区的不同也就意味着,有些变量虽然名字一样但实则毫无关系并且不能相互影响(其实可以通过指针来进行链接,但这里先不讨论)

有一点需要注意,不论是内存还是其中的几个区域,其大小都是有限的,如果你肆无忌惮的使用,比如搞个死循环的程序让电脑不断运行,那么不仅仅电脑会发热发烫,还会造成栈溢出或内存泄露等后果,这也是程序员所应该避免的

好了,就简单说到这里。


文章作者: 耀韬
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 耀韬 !
  目录