【发布时间】:2013-06-17 18:27:20
【问题描述】:
我正在编写一个 C++ 应用程序,它使用 iostream 实例从 Web 服务中积累和消化大量二进制数据 (10M+)。流是首选的原因有几个,但其中最重要的是易于与基于流的第三方 API 集成,而在类型之间转换时不需要内存中的副本。
当我消化完数据后,我想显式释放 iostream 实例下的内存。我确信当实例超出范围时内存会被释放,但由于我将它传递给 API,我不确定它是否会得到有效处理。如果我使用的是字符串流,我可以调用std::stringstream.clear(); std::stringstream.str(std::string());。有没有类似的方法来显式“重置”一个 iostream?
提前致谢。
【问题讨论】:
-
您使用的是什么 API?使用流的情况如何?
-
libcURL。该流在调用“执行”之前作为选项传递给 cURL 句柄,并填充 HTTP 响应。
-
什么是“iostream 实例”?一个 fstream?
-
@Casey:“一个 iostream 的实例”,也是“一个 iostream”。例如:
std::iostream my_stream; -
显然我是个白痴,我说服自己
std::iostream是抽象的。我现在就闭嘴。
标签: c++ memory-management iostream