Có mã như:điều hành mới với tùy chọn nothrow vẫn ném ngoại lệ
#include <iostream>
int main(){
for(;;){
int* ptr = new (std::nothrow) int;
if(ptr == 0){
std::cout << 0 << std::endl;
break;
}
}
std::cin.get();
return 0;
}
Tuy nhiên, chương trình này vẫn ném std :: bac_alloc ngoại lệ, altough mới được gọi với std :: nothrow tham số. Chương trình này được biên dịch trong Visual C++ 2010. Tại sao ngoại lệ được ném?
Chỉnh sửa:
Sử dụng g ++ trên Windows từ mingw, mọi thứ hoạt động tốt.
Chương trình này không được biên dịch. Thật đáng tiếc. Bạn nên thêm '#include'. Dù sao, bạn đang sử dụng phiên bản VC++ nào? –
Vâng, nó có. Phiên bản từ năm 2010. – scdmb
Nó cũng biên dịch trên gcc. Cái quái gì khiến tôi tin rằng nó sẽ là một ý tưởng tốt để thực sự chạy nó? – pmr