_set_new_mode
更新 : 2007 年 11 月
malloc 関数に対する new ハンドラのモードを設定します。
int _set_new_mode(
int newhandlermode
);
パラメータ
- newhandlermode
malloc 関数に対する new ハンドラのモード (有効値は 0 または 1)。
戻り値
malloc 関数に対して設定されていた以前のハンドラ モードを返します。メモリの割り当てに失敗したときに malloc 関数が new ハンドラ ルーチンを呼び出すモードだった場合は、1 を返します。失敗しても new ルーチンを呼び出さないモードだった場合は 0 を返します。newhandlermode 引数が 0 または 1 以外の場合は –1 を返します。
解説
C++ の _set_new_mode 関数は、malloc 関数に対する new ハンドラのモードを設定します。メモリの割り当てに失敗した場合、new ハンドラのモードに応じて、malloc 関数が _set_new_handler で設定されている new ハンドラ ルーチンを呼び出すかどうかが決まります。既定では、malloc 関数はメモリの割り当てに失敗しても new ハンドラ ルーチンを呼び出しません。既定の動作をオーバーライドすると、new 演算子がメモリの割り当てに失敗したときと同じように、malloc 関数がメモリの割り当てに失敗した場合にも、malloc 関数は new ハンドラのルーチンを呼び出すことができます。詳細については、『C++ Language Reference』の new および delete の各演算子の説明を参照してください。既定の動作をオーバーライドするには、プログラム内の早い段階で次の関数を呼び出すか、または Newmode.obj とリンクします。
_set_new_mode(1)
「リンク オプション」を参照してください。
この関数は、パラメータを検証します。newhandlermode が 0 または 1 以外の場合、この関数は、「パラメータの検証」に説明されているように、無効なパラメータ ハンドラを呼び出します。実行の継続が許可された場合、**_**set_new_mode は -1 を返し、errno を EINVAL に設定します。
必要条件
ルーチン |
必須ヘッダー |
---|---|
_set_new_mode |
<new.h> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
.NET Framework の相当するアイテム
適用できません。標準 C 関数を呼び出すには、PInvoke を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。