Generalnie zgadzam się, że nie ma sensu próbować dojść do siebie. Ale może być użyteczny w określonych okolicznościach. Na przykład przydzielając duże ilości pamięci zależnej od wyborów użytkownika, a jeśli się nie powiedzie, możesz się wycofać w sposób czysty i pozwolić na ponowienie z innymi ustawieniami. Robię to dla konwersji chmur punktów do siatek 3D, co obejmuje pewne etapy, w których wymagania dotyczące pamięci nie są z góry znane. Wystarczy ostrożne kodowanie kroków, które chcesz odzyskać, z natychmiastową i czystą ścieżką wycofania. Na przykład niektóre z moich struktur danych to mapy bitowe lub bufory z każdą linią przydzieloną osobno w celu zminimalizowania problemów z pofragmentowaną pamięcią. Konstruktory próbują ... z wyjątkiem obsługi i wyrzucenia wyjątku EOutOfMemory, a destruktory zwolnią wszystkie linie, które zostały już przydzielone. Nie mogę zagwarantować, że to zawsze zadziała, ale zadziałało wystarczająco dobrze, aby było warto.
czasami tak jest. Widziałem ludzi próbujących przydzielić bufor pamięci 3GB w aplikacjach Win32 :-) To zależy od tego, co naprawdę próbowałeś zrobić, zanim dostałeś błąd. W niektórych przypadkach można je odzyskać. –