30.06.2013 Aufrufe

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

Softwareentwicklung in C++ - ASC

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

398 12. Operator Overload<strong>in</strong>g<br />

25 i f ( dummy memory consumer ) // there i s someth<strong>in</strong>g to get r i d o f<br />

26 {<br />

27 delete [ ] dummy memory consumer ;<br />

28 dummy memory consumer = 0;<br />

29 c e r r try aga<strong>in</strong> ” b a d a l l o c<br />

Per Def<strong>in</strong>ition liefert die Funktion set_new_handler den zuletzt aktiven<br />

Handler. Je nach Applikation sollte man sich diesen merken und wieder e<strong>in</strong>setzen,<br />

wenn man se<strong>in</strong>en eigenen Handler nicht mehr im Programm haben<br />

will.<br />

Nachdem wir jetzt das erwartete Verhalten bei Speicherknappheit kennen,<br />

wissen wir endlich auch, wie sich e<strong>in</strong> eigener new Operator korrekt zu verhalten<br />

hat, um dieser Konvention zu entsprechen. Zur Demonstration habe<br />

ich das obige Beispiel um e<strong>in</strong>e korrekt funktionierende Def<strong>in</strong>ition e<strong>in</strong>es globalen<br />

new[] Operators erweitert (correct_new_operator_demo.cpp). Bis<br />

auf den neu h<strong>in</strong>zugekommenen new[] Operator hat sich das Programm nicht<br />

verändert, also möchte ich auch nur diesen hier abdrucken:<br />

23 void ∗ operator new [ ] ( s i z e t s i z e )<br />

24 throw( b a d a l l o c )<br />

25 {<br />

26 cout

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!