GDI con poca memoria

1

Sono aggiornato a Visual C ++. Mentre procedevo nel libro "Programmare Windows con MFC", mi sono imbattuto in GDI ( Graphics Device Interface ) e nell'uso di vernice spazzola. Il libro dice che un pennello non può essere creato se il tuo GDI ha poca memoria.

Voglio sapere quando e in che modo GDI ha poca memoria? E ancora più importante, qual è la ragione per cui non possiamo creare il pennello quando GDI ha poca memoria?

    
posta vin 30.07.2012 - 11:48
fonte

1 risposta

1

Questo dipende un po 'dalla versione di Windows che hai scelto come target, ma basti dire che quando si crea un oggetto GDI come un pennello o un percorso, GDI allocherà della memoria per quell'oggetto nella memoria dell'applicazione o in un memoria di processo del server condiviso (% SYSTEM \ csrss.exe). In alcune versioni di Windows, parte di questa memoria è allocata in modalità Kernel.

Vedi questo vecchio, vecchio, vecchio articolo per quanta memoria e dove

Se non si rilascia l'oggetto, GDI non recupererà la memoria. Basti dire che c'è un limite a quanto è disponibile (non necessariamente proporzionale alla RAM del PC). I limiti effettivi variano, da Windows 95 in poi. Può essere influenzato dal carico generale dell'applicazione (ad esempio, molte app grafiche caricate, alcune delle quali perdenti), problemi con i driver grafici, un numero di utenti concorrenti che competono per la risorsa (ad esempio, Terminal Server).

Se vuoi vederlo esaurito, fai qualcosa di simile a questo:

CBitmap * pbm; while (true) { pbm = CBitmap::CreateBitmap(...); Sleep(0); }

Ulteriori letture:

Perdite di risorse: rilevamento, individuazione e riparazione del codice GDI di perdita

ERRORE: perdita di memoria GDI in IDE di Developer Studio

GDI ha poca memoria - chiudi una o più finestre e prova nuovo

Messaggi di memoria esauriti quando hai un gran numero di programmi in esecuzione

    
risposta data 30.07.2012 - 17:13
fonte

Leggi altre domande sui tag