namespace cpp

C++ lernen, kennen, anwenden

Benutzer-Werkzeuge

Webseiten-Werkzeuge


kennen:lib:set_new_handler

set_new_handler()

#include <new>

new_handler set_new_handler(new_handler handler) 

Hinterlegt einen Verweis auf die Funktion, die aufzurufen ist, wenn kein Speicher reserviert werden kann.

Ein new_handler sollte eine der folgenden Aktionen ausführen:

  • mehr Speicher für den |new|-Aufruf bereitstellen und dann zurückkehren,
  • eine bad_alloc-Ausnahme werfen oder
  • abort() oder exit() aufrufen.

Parameter

handler Adresse einer Funktion

Die Funktion muss folgenden Typ besitzen:

typedef void (*new_handler) ();

Ergebnis

Rückgabewert: die Adresse der bisherigen Behandlungsroutine.

Siehe auch

Beispiel

set_new_handler.cpp
#include <new>
#include <iostream>
 
void notstand()
{
  std::cerr << "... wird es auch schief gehen." << std::endl;
  throw std::bad_alloc();
}
 
int main()
{
  std::new_handler old = std::set_new_handler(notstand); 
 
  try
  { 
    std::cout << "Wenn etwas schiefgehen kann, ..." << std::endl; 
    double *p = new double[ 100000000 ];
  } 
  catch(std::bad_alloc& )
  {
    std::cerr << "\t(Murphy's Gesetz)" << std::endl;
  }
  std::set_new_handler(old);  
}
kennen/lib/set_new_handler.txt · Zuletzt geändert: 2019-11-20 16:15 von rrichter