【发布时间】:2016-02-12 21:44:51
【问题描述】:
Here's the text from the book that I referred to
根据我在书中读到的内容(我附上了上面书中文本的图像),当流对象超出范围时,它与程序/文件的连接或任何关闭但它仍然存在在与其关联的缓冲区的内存中。 那么它什么时候从内存中删除呢?
感谢任何帮助!
谢谢!
【问题讨论】:
Here's the text from the book that I referred to
根据我在书中读到的内容(我附上了上面书中文本的图像),当流对象超出范围时,它与程序/文件的连接或任何关闭但它仍然存在在与其关联的缓冲区的内存中。 那么它什么时候从内存中删除呢?
感谢任何帮助!
谢谢!
【问题讨论】:
你教科书的措辞很容易引起误解。
当一个对象超出范围时,它会被销毁。当一个 stream 被销毁时,它的连接就会关闭,就像您手动调用 close() 函数一样。然后,与流相关的所有内存都被释放。
作者强调反之不成立,即如果你调用流的close()方法,你并没有破坏它,你只是关闭了与它的连接。 p>
【讨论】:
不,要么你的书是错的,要么你误解了它。当fstream 对象被销毁(即超出范围)时,其文件描述符将被关闭,其stream_buffer 也将被删除。
只是猜测:也许这本书将指向 fstream 对象的指针与 fstream 对象自身混合在一起。当指针超出范围时,它指向的对象不会被销毁。
【讨论】: