2022/10/11记录:
在iostream中无论是InputStream还是OutputStream还是其他的Stream在close()函数执行前都会进行flush()操作。但是在执行过程中并非直接传输至file中,而是先把data保存在内存缓冲区。
这就会导致在io流中当读完操作,但并不会全部write进file中,在缓冲区中仍然有小部分残余data。所以要用到flush进行清空缓冲区的数据保证写入到file,另一方面也可以保证内存垃圾回收机制,不会有冗余数据产生。
那么说到这里就抛出一个问题:为什么会有小部分存在缓冲区中?首先联想到缓冲区的数据结构,是以二叉堆进行实现的队列,所以才会当队列数据满的时候才会进行出队操作,所以后继无数据入队列,那么队列中的数据也无法进行出队操作。
以上为个人猜想结论。