標準/拡張機能 | C/C++ | 依存項目 |
---|---|---|
ISO/ANSI C++ | C++ のみ |
#include <new>
new_handler set_new_handler(new_handler ph) throw();
set_new_handler() 関数は、z/OS® XL C++ エラー処理メカニズムの一部です。set_new_handler() によって新規ハンドラー関数が登録済みの場合、その新規ハンドラー関数をストレージに割り振ることができない場合には、new 演算子によって呼び出されることになります。 新規ハンドラー関数を登録していなかった場合、デフォルトの動作として、新規オペレーターは NULL を戻します。
set_new_handler() に与えられる引数は、ヘッダー <new> に定義される、型 new_handler によるものです (つまり、void 戻り型の関数、および引数なしの関数へのポインター)。
NOXPLINK でコンパイルされる C++ アプリケーションについては、新規ハンドラー関数のアドレスを含む変数が、実行可能モジュールに静的にバインドされます。つまり、各実行可能モジュールは、その実行可能モジュールの一部としてリンク・エディットされた他の関数だけが共有する、独自の新規ハンドラー関数を持つことになります。これは、複数のスレッドが同じ実行可能モジュールを使用している場合にも当てはまります。したがって、set_new_handler() を非 XPLINK DLL 内から実行することは、新規ハンドラー関数をその DLL の外部で起動する場合には、できないことになります。
XPLINK でコンパイルされた C++ アプリケーションについては、新規ハンドラー関数は、完全にグローバルであるため、DLL の制限はありません。XPLINK 実行可能モジュールで構成されるマルチスレッド環境では、set_new_handler() の呼び出しによって作成された新規ハンドラー関数が、やはり、(POSIX) プロセスのすべてのスレッドに適用されます。
型 new_handler の値を戻します。 指し示される関数は、直前に set_new_handler() 関数によって呼び出された関数ですが、新規ハンドラー関数が確立されていなかった場合は、NULL になります。
新しい演算子と set_new_handler() 関数を含む z/OS XL C++ エラー処理については、「z/OS XL C/C++ ランゲージ・リファレンス」を参照してください。