01 // Setzen der Fehlerbehandlung bei new
02 // Datei: handler.cpp
03 // Die Zuweisung an _new_handler ist veraltet.
05 #include <stdio.h>
06 #include <stdlib.h>
07 #include <new.h>
09 int z = 1;          // global für den handler
11 void new_handler ()
12 {
13 printf ("\nHier ist new: Ich habe keinen "
14    "Speicher für %i double-Vars. mehr frei.\n",
15    z);
16 exit (1);        // keine Reparaturmöglichkeit
17 }
19 int main ()
20 {
21 int i;
22 double * zeiger;
23 void (*fz)();
25 fz = set_new_handler (new_handler); // oder:
26 // _new_handler = mein_handler;    // veraltet!
27
28 for (i=0;i< 100;i++)    // Endlosschleife
29   { if ((zeiger = new double [z] ) != NULL)
30   {
31   delete zeiger;       // Platz freigeben
32    z = z +1000;
33   }
34   else
35   {
36    fprintf(stdout,"\nHandler lief nicht.\n");
37   }
38  }
39 return 0;
40 }

Bild 18-6: Frühe Bindung und Feldzugriff