1

私は 3D ベクトルを扱っていましたが、すべてが完璧に機能しました。ofstream ファイルを追加して操作すると、Segmentation Fault が表示されました。問題がまったくわかりません。次のコードは機能しません。

#include <iostream>
#include <vector>
#include <fstream>

std::vector < std::vector < std::vector <float> > > hand;


int main(){

//First Part
std::ofstream file;
file.open("test.csv");
file << "Hello World!";
file.close();

//Second Part
hand.reserve(20);
for (int i=0; i<hand.capacity(); i++){
    hand[i].reserve(4);
}

return 0;
}

パーツの 1 つにコメントを付けると、コードは完全に機能します。これらを同時に操作しようとすると、セグメンテーション違反が発生します。

次の代わりに、コードが機能することに注意することも重要です。

hand.reserve(20);

8 未満の数値を使用します。

hand.reserve(7); //or lower

私の質問は: 同時に使用するとコードが機能しないのはなぜですか? 修正するにはどうすればよいですか? この特定のケースについて説明はありますか?

これをもっと大きなコードに実装する必要があるので、根本的な原因を知り、次のケースではそれを回避することをお勧めします。

4

3 に答える 3