自向量变长无符号整数调用f(-1)
抛出bad_alloc
。我怀疑有一个电话是2147483648,实际上是18446744073709551615,因为它是x64系统。我怎样才能获得有关错误细节的信息?这可能是一般化的,我怎么能得到比e.what()
更多的细节?从bad_alloc中获取更多详细信息?
void f(int i){
vector<int> v(i);
printf("vector size: %d", v.size());
}
int main(int argc, char** argv) {
//f(1); // vector size: 1
try{
f(-1); // terminate called after throwing an instance of 'std::bad_alloc'
//what(): std::bad_alloc
}catch(std::bad_alloc& e){
printf("tried to allocate: %d bytes in vector constructor", e.?);
}
return 0;
}
你想看什么样的附加信息? –
与你的问题无关,你正在调用的vector构造函数需要'size_t'参数,而你正在传递'int'。提高警告级别,编译器会警告你这些事情。 – IInspectable
是的,这是真的,我知道,这只是一个简短的测试,重要的是当我传递-1时会得到什么 – 4pie0