我正在尝试一些简单的事情。
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)
答案 0 :(得分:2)
我调试了一些,并意识到 dynSize为-1。
这里调用的构造函数是std::vector::vector( std::size_t )
,它采用无符号数。传递负值会导致尝试分配一个巨大的向量,这可能会导致立即终止。