簡體   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