给初学者解释程序设计中内存外存的利用

简介: 【来信】老师您好:  我也是一名初学C++的学生,从这学期开始也一直都在跟着您学习,今天看到您的文件+结构体这个项目,关于后边的选择30名同学发奖学金,我有新的想法就是把之前排好序的信息存储到一个新的文件中,然后再从这个新文件中取数据判断,因为自己是初学者,虽然实验了几个数是成功的,可还是想请教一下老师,我不太懂的是为什么排好序之后的数据可以保存生成新的文件,在程序运行中这些中间数据是存储在

【来信】

老师您好:

  我也是一名初学C++的学生,从这学期开始也一直都在跟着您学习,今天看到您的文件+结构体这个项目,关于后边的选择30名同学发奖学金,我有新的想法就是把之前排好序的信息存储到一个新的文件中,然后再从这个新文件中取数据判断,因为自己是初学者,虽然实验了几个数是成功的,可还是想请教一下老师,我不太懂的是为什么排好序之后的数据可以保存生成新的文件,在程序运行中这些中间数据是存储在哪里的呢?一直到程序结束,是不是他们一直都在呀?还有就是在向文件中存储数据的时候为什么数据一定是要分行的?麻烦老师了,还请老师赐教!

【回复】
  需要了解一下计算机的存储系统。计算机的存储系统包括内存、外存两部分(缓存之类的,学计算机组成时再说)。内存小,快,断电就没了;外存指磁盘等,慢,很大,断电后还在。文件就存在在外存上。程序运行中,将文件中的数据读入,就是从外存的文件中,读到了内存里。对于这个程序而言,定义了数组,数组分配在内存里(所以访问起来很快),读入的数据就在内存中的这一段空间里了。只要数组在其作用范围内,就一直能够访问。
  文件中存储的数据并不一定分行,各个数据用空格隔开,或者用Tab(\t)隔开都可以,这和键盘输入,显示器输出的要求一样,请参考相关资料。

  你的方法将中间结果保存到文件中,这是可行的,但却不常用。原因是中间结果在外存,速度会慢,也是对磁盘无意义的磨损,就让它在内存中待着好了,避免了频繁地访问磁盘还速度快,何苦而不为?

  

china-pub(正在发售)
卓越网(接受预订) 
图灵社区  官方试读本下载
豆瓣

==================== 迂者 贺利坚 CSDN博客专栏=================

|==  IT学子成长指导专栏  专栏文章分类目录(不定期更新)    ==|

|== C++ 课堂在线专栏   贺利坚课程教学链接(分课程年级)   ==|

======== 为IT菜鸟起飞铺跑道,和学生一起享受快乐和激情的大学 =======

  
    

目录
相关文章
|
5月前
|
数据库 数据库管理 Python
解释Python中的内存视图(Memory View)。
解释Python中的内存视图(Memory View)。
165 0
|
存储 缓存
百度搜索:蓝易云 ,CPU、内存、缓存的关系详细解释!
总结起来,CPU、内存和缓存之间的关系可以概括为:CPU是计算机的处理器,内存是用于存储数据的设备,缓存则是位于CPU和内存之间的高速存储器,用于提高数据的读取速度。它们共同协作,以提供高效的计算机性能。
102 0
|
3月前
|
缓存 安全 Java
Java面试题:解释volatile关键字的作用,以及它如何保证内存的可见性
Java面试题:解释volatile关键字的作用,以及它如何保证内存的可见性
69 4
|
3月前
|
设计模式 存储 安全
Java面试题:设计一个线程安全的单例类并解释其内存占用情况?使用Java多线程工具类实现一个高效的线程池,并解释其背后的原理。结合观察者模式与Java并发框架,设计一个可扩展的事件处理系统
Java面试题:设计一个线程安全的单例类并解释其内存占用情况?使用Java多线程工具类实现一个高效的线程池,并解释其背后的原理。结合观察者模式与Java并发框架,设计一个可扩展的事件处理系统
57 1
|
4月前
|
存储 设计模式 Java
JavaSE 面向对象程序设计初级 2024方法变量封装javabean结合内存图详解
JavaSE 面向对象程序设计初级 2024方法变量封装javabean结合内存图详解
37 7
|
4月前
|
Java
JavaSE 面向对象程序设计进阶 继承和方法重写 2024理论与内存详解
JavaSE 面向对象程序设计进阶 继承和方法重写 2024理论与内存详解
31 3
|
3月前
|
设计模式 安全 NoSQL
Java面试题:设计一个线程安全的单例模式,并解释其内存占用和垃圾回收机制;使用生产者消费者模式实现一个并发安全的队列;设计一个支持高并发的分布式锁
Java面试题:设计一个线程安全的单例模式,并解释其内存占用和垃圾回收机制;使用生产者消费者模式实现一个并发安全的队列;设计一个支持高并发的分布式锁
56 0
|
3月前
|
监控 Java 开发者
Java面试题:解释Java内存模型中的内存顺序规则,Java中的线程组(ThreadGroup)的工作原理,Java中的FutureTask的工作原理
Java面试题:解释Java内存模型中的内存顺序规则,Java中的线程组(ThreadGroup)的工作原理,Java中的FutureTask的工作原理
25 0
|
3月前
|
Java
Java面试题:Java内存模型与并发编程知识点,解释Java中“happens-before”的关系,分析Java中的内存一致性效应(Memory Consistency Effects)及其重要性
Java面试题:Java内存模型与并发编程知识点,解释Java中“happens-before”的关系,分析Java中的内存一致性效应(Memory Consistency Effects)及其重要性
26 0
|
3月前
|
存储 安全 Java
Java面试题:Java内存模型中的主内存与工作内存是如何协同工作的?请解释Java内存模型中的可见性、原子性和有序性,举例说明Java内存模型中的happens-before关系
Java面试题:Java内存模型中的主内存与工作内存是如何协同工作的?请解释Java内存模型中的可见性、原子性和有序性,举例说明Java内存模型中的happens-before关系
31 0