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