Search code examples
c++exceptionnew-operatornothrow

Operator new with nothrow option still throws exception


There is such code:

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

However, this program still throws std::bac_alloc exception, altough new is called with std::nothrow parameter. This program is compiled in Visual C++ 2010. Why the exception is thrown?

Edit:

Using g++ on Windows from mingw, everything works ok.


Solution

  • I just ran your sample from VC2010. It is not new(nothrow) that throws, but __security_check_cookie.