有一个STL <ios> 库函数
streambuf* std::basic_ios::rdbuf (streambuf* sb);
此函数可用于更改与流关联的流缓冲区。如果您使用它,它会返回一个指向先前使用的流缓冲的指针。不清楚谁“拥有”指针或它的生命周期是什么。标准 (27.5.5.3/5) 简单地说



这不是很有用。这个指针的有效期有什么保证吗?一旦完成,调用代码 delete 是否应该指向指针?

最佳答案

缓冲区归最初将缓冲区安装到流对象中的任何人所有。流对象带有一个内部缓冲区,默认构造的流对象默认使用它。

因此,除非您的代码使用 rdbuf() 方法显式安装了非默认缓冲区,否则答案是只要流对象存在,缓冲区就是有效的。

如果您没有安装缓冲区,您显然不应该对其进行 delete

关于c++ - rdbuf(...) 返回一个指针——谁拥有指向的缓冲区?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39121258/

10-11 22:24
查看更多