Wie kann man in C / C ++ mit Situationen umgehen, in denen nicht genügend Arbeitsspeicher vorhanden ist?

Ich schreibe eine Caching-App, die viel Speicher benötigt.

Hoffentlich werde ich mein Gedächtnis gut genug verwalten, aber ich denke nur darüber nach, was ich tun soll, wenn mir das Gedächtnis ausgeht.

Wenn ein Aufruf zum Zuweisen eines einfachen Objekts fehlschlägt, ist es wahrscheinlich, dass auch ein Syslog-Aufruf fehlschlägt?

EDIT: Ok, vielleicht sollte ich die Frage klären. Wenn malloc oder new einen NULL- oder 0L-Wert zurückgibt, bedeutet dies im Wesentlichen, dass der Aufruf fehlgeschlagen ist und Ihnen aus irgendeinem Grund kein Speicherplatz zur Verfügung steht. Was wäre in diesem Fall also sinnvoll?

EDIT2: Mir ist gerade klar geworden, dass ein Aufruf von "new" eine Ausnahme auslösen kann. Dies könnte auf einer höheren Ebene gefangen werden, so dass ich vielleicht anmutig weiter oben austreten kann. An diesem Punkt kann es sogar möglich sein, abhängig davon, wie viel Speicher freigegeben ist, eine Wiederherstellung durchzuführen. Zumindest sollte ich dann hoffentlich in der Lage sein, etwas zu protokollieren. Obwohl ich Code gesehen habe, der den Wert eines Zeigers nach Neuem überprüft, ist dies nicht erforderlich. In C sollten Sie den Rückgabewert für malloc überprüfen.

Antworten auf die Frage(18)

Ihre Antwort auf die Frage