C++ 使用动态大小时,二维向量中的push_back()会出错

C++ 使用动态大小时,二维向量中的push_back()会出错,c++,stl,C++,Stl,我正在尝试一些简单的事情 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; comput

我正在尝试一些简单的事情

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 !!!!!
std::vector computeBuf;
std::向量温度;
计算缓冲区推回(温度);//对的
computeBuf.push_back(std::vector(10));//对的
int size=10;
computeBuf.push_back(标准::向量(大小));//对的
int dynsize=someClass.getValue();
computeBuf.push_back(std::vector(dynsize));//过错
变量“dynSize”导致程序崩溃的原因是什么。 编译器似乎需要知道变量的大小。 为什么会这样?? (PS:someClass.getValue()返回一个int)

我又调试了一些,发现dynSize是-1。


这里调用的构造函数是
std::vector::vector(std::size\u t)
,它接受一个无符号的数字。传递负值会导致尝试分配一个巨大的向量,这可能会导致立即终止。

我们需要查看该函数。
dynsize
可能太大。它可能实际上在
getValue
函数中崩溃,或者返回一个大的垃圾值,或者负值。可能是函数没有返回值,或者返回了一些未初始化的值。谢谢。chris和fasked都没有指出我被推回的方式有任何错误,这让我回顾了我的代码。我调试了一些,发现dynSize是-1。