次の方法で共有


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

参照

参照

メモリ割り当て

calloc

free

realloc

_query_new_handler

_query_new_mode