In generale, sono d'accordo sul fatto che non abbia senso cercare di recuperare. Ma può essere utile in circostanze specifiche. Ad esempio, allocando grandi quantità di memoria che dipendono dalle scelte dell'utente e, in caso di errore, è possibile eseguire il backup in modo pulito e riprovare con impostazioni diverse. Lo faccio per convertire le nuvole di punti in mesh 3D, che include alcuni passaggi in cui i requisiti di memoria non sono noti in anticipo. Richiede solo un'attenta codifica dei passaggi che si desidera ripristinare, con un percorso di backout immediato e pulito. Ad esempio, alcune delle mie strutture dati sono bitmap o buffer con ogni riga allocata separatamente per ridurre al minimo i problemi con la memoria frammentata. I costruttori hanno provato ... tranne la gestione e l'emissione di un'eccezione EOutOfMemory, e i distruttori liberano qualsiasi riga già assegnata. Non posso garantire che funzionerà sempre, ma ha funzionato abbastanza bene da meritare di essere fatto.
fonte
2013-03-07 01:34:30
a volte lo è. Ho visto persone che cercavano di allocare 3GB di memoria buffer nelle app Win32 :-) Quindi dipende da cosa hai veramente provato a fare prima di ottenere l'errore. In alcuni casi è recuperabile. –