Here's the text from the book that I referred to什么时候流对象被删除?
据我在书上读到,当一个流对象超出范围(我重视从上面的书文本的图像),其与程序/文件或任何连接被关闭但它仍然保留在与其关联的缓冲区的内存中。 那么它什么时候从内存中删除?
任何帮助表示赞赏!
谢谢!
Here's the text from the book that I referred to什么时候流对象被删除?
据我在书上读到,当一个流对象超出范围(我重视从上面的书文本的图像),其与程序/文件或任何连接被关闭但它仍然保留在与其关联的缓冲区的内存中。 那么它什么时候从内存中删除?
任何帮助表示赞赏!
谢谢!
教科书的写法是非常容易引起误解。
当一个对象超出范围,它就会被销毁。当流被销毁时,其连接会关闭,就好像您手动调用close()
函数一样。然后,释放与该流关联的所有内存。
作者强调,相反,不持有,即如果你打电话给流的close()
方法,你没有破坏它,你只是关闭它的连接。
不,你的书是错的,或者你误解了它。当一个fstream
对象被销毁(即超出范围)时,其文件描述符将被关闭,并且其stream_buffer
将被删除。
只是猜测:也许这本书是混合指针fstream
对象与fstream
对象他们自我。当一个指针超出范围时,它指向的对象将不会被销毁。
非常感谢你的帮助........现在我终于明白了! –