_set_new_mode
malloc
のnew
ハンドラー モードを設定します。
構文
int _set_new_mode( int newhandlermode );
パラメーター
newhandlermode
new
malloc
のハンドラー モード。有効な値は 0 または 1 です。
戻り値
malloc
の以前のハンドラー モードのセットを返します。 戻り値 1 は、メモリの割り当てに失敗した場合、以前に new
ハンドラー ルーチンmalloc
呼び出されたことを示します。戻り値 0 は、メモリを割り当てなかったことを示します。 newhandlermode
引数が 0 または 1 と等しくない場合は、-1 を返します。
解説
C++ _set_new_mode
関数は、malloc
のnew
ハンドラー モードを設定します。 new
ハンドラー モードは、失敗した場合に、_set_new_handler
によって設定されたnew
ハンドラー ルーチンを呼び出すmalloc
かどうかを示します。 既定では、メモリの割り当てに失敗した場合、 malloc
は new
ハンドラー ルーチンを呼び出しません。 この既定の動作をオーバーライドして、malloc
がメモリの割り当てに失敗したときに、malloc
new
ハンドラー ルーチンが同じ理由で失敗したときにnew
演算子が実行するのと同じ方法で呼び出すことができます。 詳細については、「C++ 言語リファレンス」のnew
演算子とdelete
演算子を参照してください。 既定の動作をオーバーライドするには、次の関数を呼び出します。
_set_new_mode(1);
プログラムの早い段階で、またはNewmode.objにリンクします ( リンク オプションを参照してください)。
この関数は、そのパラメーターを検証します。 newhandlermode
が 0 または 1 以外の場合、「パラメーターの検証で説明されているように、関数は無効なパラメーター ハンドラーを呼び出します。 実行を続行できる場合、 _set_new_mode は -1 を返し、 errno
を EINVAL
に設定します。
既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 この動作を変更するには、「CRT でのグローバル状態」を参照してください。
要件
ルーチンによって返される値 | 必須ヘッダー |
---|---|
_set_new_mode |
<new.h> |
互換性の詳細については、「 Compatibility」を参照してください。
関連項目
メモリ割り当て
calloc
free
realloc
_query_new_handler
_query_new_mode