繁体   English   中英

std :: istream_iterator,内存消耗

[英]std::istream_iterator, memory consumption

我尝试使用迭代器遍历文本文件:

1) std::istream_iterator<MyData> itRecordStreamBegin(fileStream);
2) std::istream_iterator<MyData> itRecordStreamEnd; 

第一行之后,它从文件中读取一些数据(它对MyData类型使用运算符>>)。 如预期的那样。

不幸的是,在那之后,内存消耗增加了,似乎istream_iterator试图将整个文件加载到内存中。 几秒钟后(当抛出out_of_memory异常时)调试器进入第二行。 但是文件读取失败,我无法读取更多内容。

问题

istream_iterator是否正确(将文件加载到内存中)?

对于较小的文件(例如20MB),我没有观察到。

也许对于这么大的文件,我需要使用常见的getline方法?

istream_iterator仅在类型上使用>>运算符。 它在内存中最多保留一种类型的实例。 使用它时,您确实要复制该实例。 我会怀疑(但看不到代码)您的复制构造函数或析构函数有缺陷,或者您在>>运算符的某个位置泄漏了内存。 如果问题与istream_iterator有关,我将感到非常惊讶。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM