gpt4 book ai didi

c++ - std::istream_iterator,内存消耗

转载 作者:行者123 更新时间:2023-11-28 00:46:42 26 4
gpt4 key购买 nike

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

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 有关,我会感到非常惊讶。

关于c++ - std::istream_iterator,内存消耗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15968621/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com