自向量變長無符號整數調用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