namespace cpp {}

C++ lernen, kennen, anwenden

Benutzer-Werkzeuge

Webseiten-Werkzeuge


kennen:lib:set_new_handler
no way to compare when less than two revisions

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.


kennen:lib:set_new_handler [2019-11-20 16:15] (aktuell) – angelegt - Externe Bearbeitung 127.0.0.1
Zeile 1: Zeile 1:
 +====== set_new_handler() ======
 +''#include'' [[..:include:new]]
 +
 +<code cpp>
 +new_handler set_new_handler(new_handler handler) 
 +</code>
 + 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:
 +
 +<code cpp>
 +typedef void (*new_handler) ();
 +</code>
 +==== Ergebnis ====
 +Rückgabewert: die Adresse der bisherigen Behandlungsroutine.
 +
 +==== Siehe auch ====
 +[[..:operator#einstellig|dynamische Speicheranforderung]].
 +
 +==== Beispiel ====
 +<code cpp 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);  
 +}
 +</code>
  
kennen/lib/set_new_handler.txt · Zuletzt geändert: 2019-11-20 16:15 von 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki