new Exception werfen lassen
-
Hallo,
ich habe die Funktion new so überladen, dass sie meine selbsterstellte
Exception MemoryAllocationException geworfen wird, falls dies nicht möglich ist.
Nun ist mir eingefallen, dass die STL usw ja auch immer new benutzen
und sicher irgendwo std::bad_alloc fangen möchten. Diese wird aber wegen
einer Überladung nicht mehr geworfen.Nun ist meine Frage, ist es überhaupt sinnvoll new zu Überladen, oder
schafft es mehr Probleme als es löst.mfg
-
Letzteres.
Warum sollte new scheitern? Weil nicht genügend Speicher da ist vermutlich. Eine neue Exception anzulegen und diese zu behandeln dürfte dann ebenso die Grenzen des Speichers sprengen etc.
Bezweifle das das sinnvoll ist.
-
Eigentlich wirft new eh ein bad_alloc, wenn kein Speicher mehr frei ist. Wozu eine eigene Exception reinbasteln? In der STL sollte das eigentlich kein Problem machen, da intern meines Wissens keine Exceptions gefangen sondern diese immer hoch gereicht werden.
-
Jetzt habe ich ein neues Problem,
Ich habe new Überladen, jedoch weiß der Compiler,
jetzt nicht, welches new er benutzen soll. Es kommt immer der
Fehlererror: call of overloaded `operator new [](unsigned int)' is ambiguousWie kann ich dem Compiler mitteilen, dass er nur noch mein new verwenden soll?
Ich verwende GCC mit Codeblocks.
-
Fellhuhn schrieb:
Warum sollte new scheitern? Weil nicht genügend Speicher da ist vermutlich. Eine neue Exception anzulegen und diese zu behandeln dürfte dann ebenso die Grenzen des Speichers sprengen etc.
Um mich selbst mal aus einen anderen Thread zu zitieren:
asc schrieb:
Also, die übliche Strategie die ich zum bad_alloc gelernt habe ist, das man anfangs einen Speicherbereich alloziert, den man im Falle des bad_alloc freigibt. Ob diese Strategie unter allen Betriebssystemen klappt ist die andere Frage, wäre aber eine mögliche bad_alloc Behandlung (Mit einer Meldung ala "Achtung: Sie haben nur noch wenig freien Speicher frei. Bitte beenden sie überflüssige Anwendungen und speichern sie.").
Ich habe bislnag noch keinen Kommentar darauf erhalten ob dies in der Praxis wirklich gangbar ist (ich weiß auch nicht mehr die Quelle wo ich das mit der vorträglichen Allozierung her habe).
cu André