AfxCheckMemory 

BOOL AfxCheckMemory ( );

Valore restituito

Diverso da zero se senza errori di memoria; in caso contrario 0.

Osservazioni

Questa funzione convalida il pool di memoria libera e stampa i messaggi di errore, come richiesto. Se la funzione non rileva nessun danneggiamento della memoria, stampa nulla.

Vengono controllati tutti i blocchi di memoria attualmente allocati sull'heap, compresi quelli assegnati dalla nuova ma non quelli assegnati dalle chiamate dirette a sottostante allocatori di memoria, come ad esempio la funzione malloc o la funzione di Windows GlobalAlloc . Se qualsiasi blocco si trova ad essere danneggiati, viene stampato un messaggio all'output del debugger.

Se si include la linea

# define DEBUG_NEW nuovo

in un modulo di programma, quindi le chiamate successive a AfxCheckMemory mostrano il nome del file e la linea numero dove è stata allocata la memoria.

&Notanbsp;  Se il modulo contiene uno o più implementazioni di classi serializzabili, allora si deve mettere il #define linea dopo l'ultima chiamata di macro IMPLEMENT_SERIAL.

Questa funzione funziona solo in versione di Debug di MFC.

Esempio

 / / esempio per AfxCheckMemory
Gabbia * pcage = &nuova gabbia (21); nbsp; / / Gabbia è derivato da CObject.
Età * pagina = new Age (22);     / / Età non è derivato da CObject.
*(((Char*) pcage) - 1) = 99;   / / Corrotto precedente Guardia byte
*(((Char*) pagina) - 1) = 99;    / / Corrotto precedente Guardia byte
AfxCheckMemory()

I risultati del programma sono i seguenti:

errore di controllo di memoria a $0067495F = $63, dovrebbe essere $FD
DANNI: prima Non di oggetti blocco a $00674960
Non di oggetti allocati al file test02.cxx(48)
Situato a $00674960 non di oggetti è lunga 2 byte
errore di controllo di memoria a $00674905 = $63, dovrebbe essere $FD
DANNI: prima oggetto blocco a $00674906
Oggetto allocato al file test02.cxx(47)
Oggetto che si trova a $00674906 è lunga 6 byte

Index