次の方法で共有


_set_new_mode

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 を使用します。詳細については、「プラットフォーム呼び出しの例」を参照してください。

参照

参照

メモリ割り当て

calloc

free

realloc

_query_new_handler

_query_new_mode