【问题标题】:When do stream object get deleted?流对象什么时候被删除?
【发布时间】:2016-02-12 21:44:51
【问题描述】:

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

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

感谢任何帮助!

谢谢!

【问题讨论】:

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


    【解决方案1】:

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

    当一个对象超出范围时,它会被销毁。当一个 stream 被销毁时,它的连接就会关闭,就像您手动调用 close() 函数一样。然后,与流相关的所有内存都被释放。

    作者强调反之不成立,即如果你调用流的close()方法,你并没有破坏它,你只是关闭了与它的连接。 p>

    【讨论】:

      【解决方案2】:

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

      只是猜测:也许这本书将指向 fstream 对象的指针与 fstream 对象自身混合在一起。当指针超出范围时,它指向的对象不会被销毁。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-11-20
        • 2023-03-08
        • 1970-01-01
        • 2012-06-23
        • 1970-01-01
        • 2022-06-27
        相关资源
        最近更新 更多