初接触内存知识的收获

2020/10/13 12:25
阅读数 7

我原来对于程序的了解只有简单在大学上过C语音课程,并在学习过后没有进行写程序的训练。今天看了朱友峰老师的内存课程的视频,对程序和内存有了些了解。

  1. 计算机程序是由代码和数据组成的。按照朱老师将程序用函数来类比,代码就是这个函数的本体,是确定的存在,例如函数式子c=a+b。数据就是式子中a和b这两个变量。通过函数式子的运算,来得到结果a。这整个过程就是程序。
  2. 初步了解了两种计算机结构:冯诺依曼结构和哈佛结构。其中冯诺依曼结构是将代码和数据放在一起进行储存,哈佛结构是将数据和代码分开储存。这部分需要后面更多学习进行了解。
  3. 动态内存(DRAM)只能保持较短时间的数据。所以为了保持数据,DRAM使用电容存储,所以必须隔一段时间刷新一次,如果存储单元没有被刷新,存储的信息就会丢失。静态存储(SRAM)是指这种存储器只要保持通电,里面的储存的数据就会恒常保持。但是当电力消失后,SRAM储存的数据还是会消失。(来自百度,未展开)
  4. 内存是程序运行的本质需求,内存的目的是来存储可变的数据的。
  5. 这节课后面主要讲了如何管理内存。因为内存是程序必须的一种资源,所以内存的管理对程序来说是十分重要的技术。朱老师将对内存的管理分为两个方面:有OS和无OS,即有操作系统和计算机语言两个角度大概讲解了他们如何管理内存。在有操作系统时,因为操作系统给编程者提供了内存管理的一些接口,所以编程者只需要用API即可管理内存。而在没有操作系统,即为裸机状态时,我们需要用计算机语言来进行内存管理。这一情况下,就需要编程者自己来承担可能出现的错误结果。朱老师较为系统的讲解了汇编、C/C++、Java/C#这几种计算机语言在管理内存上的优劣所在。汇编这种计算机语言需要直接在内存地址上进行操作。C语言是有编译器存在,算是对内存进行了一定程度上的封装。并且编程者在需要用到较多的内存时,就可以利用语言API(malloc free)来进行内存管理。C++语言是在C语言之上,对内存进一步的封装。可以用语言new来为目标对象进行内存分配,最后要记住用语言delete来释放目标对象占有的内存,否则会造成内存泄露。这两种语言在我们对程序的性能十分在乎时候,会有显著优势。Java/C#这两种计算机语言同过虚拟机的方式来管理内存,这时候编程者不需要自己承担忘记释放内存的后果。这两种语言在表层程序时有显著优势,即速度快。
    我因为对于计算机算是初步接触,看起课程来有些吃力,需要更多的基础知识的学习和补充。
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部