私が取り組んでいるプログラムでは、数十万の整数を含むテキストファイルから入力を読み取る必要があることがよくあります。とりあえず、私はいくつかの値を読み取り、それらをベクトルに格納しています。必要な値がベクトルにない場合は常に、入力ファイルから再度読み取り、古い値をフラッシュして、現在読み込んでいる値のためのスペースを確保します。
常に入力ファイルから読み取る必要があり、問題が発生する前にベクターにいくつの値を格納できるのか疑問に思っている状況を避けたいと思います。max_size()は1073741823を返すので、その数の要素を格納できると思いますが、そのメモリがどこで使用されているのか、そしてその大きなベクトルを使用するのが良いかどうか疑問に思っています。
そのようにベクトルを作成する場合:
int main(){
std::vector<int> vec;
vec.push_back(3);
vec.push_back(4);
return 0;
}
そのベクトルは現在スタックメモリを使用していますか?ベクトルには2つのintが含まれているので、8バイトのスタックメモリが使用されていることを意味しますか?
MSDNのドキュメントによると:
x86およびx64マシンの場合、デフォルトのスタックサイズは1MBです。
それは多くの記憶のようには思えません。スタックメモリを増やしたい状況の例は何ですか?Visual Studioで、現在使用されているスタックとヒープのメモリの量を正確に監視する方法はありますか?
このような状況で入力ファイルからの継続的な読み取りを防ぐためにできることはありますか?