0

私は簡単なことを試しています。

std::vector<std::vector<int> > computeBuf;
std::vector<int> temp;
computeBuf.push_back(temp);                        // correct
computeBuf.push_back(std::vector<int> (10) );      // correct  
int size = 10;
computeBuf.push_back(std::vector<int> (size) );    // correct
int dynsize = someClass.getValue();
computeBuf.push_back(std::vector<int> (dynsize) ); // fault !!!!!

プログラムをクラッシュさせる変数「dynSize」についてはどうですか。コンパイラは変数のサイズを知る必要があるようです。どうしてこんなことに ??(PS : someClass.getValue() は int を返します)

4

1 に答える 1

2

もう少しデバッグして、dynSizeが-1であることに気付きました。

ここで呼び出されるコンストラクターstd::vector::vector( std::size_t )は、符号なしの数値を受け取るです。負の値を渡すと、巨大なベクトルを割り当てようとします。これにより、すぐに終了する可能性があります。

于 2013-01-28T08:57:50.513 に答える