Оператор new с опцией nothrow по-прежнему генерирует исключение

Вот такой код:

#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;
}

Однако эта программа по-прежнему выдает исключение std :: bac_alloc, хотя new вызывается с параметром std :: nothrow. Эта программа скомпилирована в Visual C ++ 2010. Почему возникает исключение?

Изменить:

При использовании g ++ в Windows из mingw все работает нормально.

6
задан iammilind 7 June 2012 в 08:20
поделиться