有一个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/