[英]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.