rdbuf(...) returns 一个指针——谁拥有指向的缓冲区?
rdbuf(...) returns a pointer -- who owns the buffer pointed to?
有STL<ios>
库函数
streambuf* std::basic_ios::rdbuf (streambuf* sb);
此函数可用于更改与流关联的流缓冲区。如果您使用它,它 returns 指向先前使用的流缓冲的指针。尚不清楚 'owns' 指针是谁或它的生命周期是多少。标准 (27.5.5.3/5) 只是说
Returns: the previous value of rdbuf()
.
信息量不大。关于这个指针的有效期有多长有任何保证吗?调用代码是否应该 delete
指针完成后?
缓冲区归最初将缓冲区安装到流对象中的任何人所有。流对象自带内部缓冲区,默认构造的流对象默认使用它。
因此,除非您的代码使用 rdbuf()
方法显式安装非默认缓冲区,否则只要流对象存在,缓冲区就有效。
如果你没有安装缓冲区,你显然不应该delete
它。
有STL<ios>
库函数
streambuf* std::basic_ios::rdbuf (streambuf* sb);
此函数可用于更改与流关联的流缓冲区。如果您使用它,它 returns 指向先前使用的流缓冲的指针。尚不清楚 'owns' 指针是谁或它的生命周期是多少。标准 (27.5.5.3/5) 只是说
Returns: the previous value of
rdbuf()
.
信息量不大。关于这个指针的有效期有多长有任何保证吗?调用代码是否应该 delete
指针完成后?
缓冲区归最初将缓冲区安装到流对象中的任何人所有。流对象自带内部缓冲区,默认构造的流对象默认使用它。
因此,除非您的代码使用 rdbuf()
方法显式安装非默认缓冲区,否则只要流对象存在,缓冲区就有效。
如果你没有安装缓冲区,你显然不应该delete
它。