什么时候删除流对象?
When do stream object get deleted?
Here's the text from the book that I referred to
根据我在一本书中读到的内容(我附上了上面书中的文字图片),当流对象超出范围时,它与 program/file 或其他任何东西的连接都会关闭但它仍然保留在内存中,并带有与之关联的缓冲区。
那么什么时候从内存中删除呢?
感谢任何帮助!
谢谢!
你教科书的措辞很有误导性。
当对象超出范围时,它就会被销毁。当 stream 被销毁时,它的连接将关闭,就像您手动调用 close()
函数一样。然后,释放与流关联的所有内存。
作者强调相反的情况不成立,即如果你调用一个流的close()
方法,你并没有破坏它,你只是关闭与它的联系。
不对,要么是你的书错了,要么是你理解错了。当一个 fstream
对象被销毁(即超出范围)时,它的文件描述符将被关闭并且它的 stream_buffer
也将被删除。
只是猜测:也许这本书将指向 fstream
对象的指针与 fstream
对象本身混合在一起。当指针超出范围时,它指向的对象将不会被销毁。
Here's the text from the book that I referred to
根据我在一本书中读到的内容(我附上了上面书中的文字图片),当流对象超出范围时,它与 program/file 或其他任何东西的连接都会关闭但它仍然保留在内存中,并带有与之关联的缓冲区。 那么什么时候从内存中删除呢?
感谢任何帮助!
谢谢!
你教科书的措辞很有误导性。
当对象超出范围时,它就会被销毁。当 stream 被销毁时,它的连接将关闭,就像您手动调用 close()
函数一样。然后,释放与流关联的所有内存。
作者强调相反的情况不成立,即如果你调用一个流的close()
方法,你并没有破坏它,你只是关闭与它的联系。
不对,要么是你的书错了,要么是你理解错了。当一个 fstream
对象被销毁(即超出范围)时,它的文件描述符将被关闭并且它的 stream_buffer
也将被删除。
只是猜测:也许这本书将指向 fstream
对象的指针与 fstream
对象本身混合在一起。当指针超出范围时,它指向的对象将不会被销毁。