什么时候流对象被删除?

时间:2015-11-11 17:50:09

标签: c++ c++11 stream c++14

Here's the text from the book that I referred to

根据我在书中读到的内容(我附上了上面一本书中的文字图片),当一个流对象超出范围时,它与程序/文件的连接或其他任何内容都已关闭但仍然存在在内存中与它相关联的缓冲区。 那么什么时候从内存中删除?

感谢任何帮助!

谢谢!

2 个答案:

答案 0 :(得分:5)

你的教科书的措辞很容易引起误解。

当一个物体超出范围时,它就会被摧毁。当被销毁时,其连接将被关闭,就像您手动调用close()函数一样。然后,释放与流关联的所有内存。

作者强调相反没有,即如果你调用流的close()方法,你没有销毁它,你只是关闭它的连接。

答案 1 :(得分:1)

不,你的书不对,或者你误解了。当fstream对象被销毁(即超出范围)时,其文件描述符将被关闭,其stream_buffer将被删除。

猜测:也许这本书混合了指向fstream对象的指针,fstream对象就是他们自己。当指针超出范围时,它指向的对象将不会被销毁。