newでメモリの確保に失敗した場合は例外(std::bad_alloc)がthrowされます。この例外をcatchする事でnewでのメモリ確保失敗を検知できます。
#include <stdio.h> #include <tchar.h> #include <iostream> #include <locale.h> #include <windows.h> /* newのメモリ確保失敗を検知する(std::bad_alloc) */ int _tmain ( int argc , _TCHAR* argv[] ) { /* ロケールを日本に設定 これを設定するだけで、標準出力に日本語が表示される ようになります。 */ setlocale( LC_ALL, "Japanese" ); try { // メモリの確保 char* cpMemory = new char[ 0x7fffffff ]; // メモリの解放 delete [] cpMemory; } catch( std::bad_alloc& err ) { // メモリ確保失敗 std::wcout << L"メモリ確保に失敗しました。" << err.what() << std::endl; } // 正常終了 return( 0 ); }
メモリ確保に失敗しました。bad allocation