次の方法で共有


set_new_handler

 

operator new がメモリを割り当てる試行が失敗すると呼び出されるユーザー定義関数をインストールします。

構文

      new_handler set_new_handler(
   new_handler _Pnew
) throw( );

パラメーター

  • _Pnew
    インストールする new_handler。

戻り値

最初の呼び出しの 0 およびそれ以降の呼び出しの前に new_handler

解説

関数で維持する new ハンドラー の静的なポインターで _Pnew を保存し、前にポインターに格納されている値を返します。 new ハンドラーは operator new (size_t) で使用されます。

使用例

// new_set_new_handler.cpp
// compile with: /EHsc
#include<new>
#include<iostream>

using namespace std;
void __cdecl newhandler( )
{
   cout << "The new_handler is called:" << endl;
   throw bad_alloc( );
   return;
}

int main( ) 
{
   set_new_handler (newhandler);
   try
   {
      while ( 1 ) 
      {
         new int[5000000];
         cout << "Allocating 5000000 ints." << endl;
      }
   }
   catch ( exception e )
   {
      cout << e.what( ) << endl;
   }
}
          5000000 の int を割り当てる。
5000000 の int を割り当てる。
5000000 の int を割り当てる。
5000000 の int を割り当てる。
5000000 の int を割り当てる。
5000000 の int を割り当てる。
5000000 の int を割り当てる。
5000000 の int を割り当てる。
5000000 の int を割り当てる。
5000000 の int を割り当てる。
5000000 の int を割り当てる。
5000000 の int を割り当てる。
5000000 の int を割り当てる。
5000000 の int を割り当てる。
5000000 の int を割り当てる。
5000000 の int を割り当てる。
5000000 の int を割り当てる。
5000000 の int を割り当てる。
5000000 の int を割り当てる。
5000000 の int を割り当てる。
5000000 の int を割り当てる。
5000000 の int を割り当てる。
5000000 の int を割り当てる。
5000000 の int を割り当てる。
new_handler が呼び出される:
不正な割り当て

必要条件

新しい <ヘッダー: >

名前空間: std