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 回答