BOOL AfxCheckMemory ( );
Valor devuelto
Distinto de cero si no hay errores de memoria; caso contrario 0.
Observaciones
Esta función valida el bloque de memoria libre e imprime los mensajes de error según sea necesario. Si la función no detecta daños en la memoria, se imprime nada.
Se comprueban todos los bloques de memoria asignados actualmente en el montón, los asignados por nuevos pero no los asignados por llamadas directas a asignadores de memoria subyacente, como la función malloc o la función de Windows GlobalAlloc incluidos. Si no encuentra ningún bloque estar dañado, se imprime un mensaje a la salida del depurador.
Si se incluye la línea
# define DEBUG_NEW nuevo
en un módulo de programa, luego las llamadas subsiguientes a AfxCheckMemory mostrar al nombre y número de línea donde se asignó la memoria.
&Notanbsp; Si el módulo contiene uno o más implementaciones de clases serializables y, a continuación, debe colocar la #define línea después de la última llamada de macro IMPLEMENT_SERIAL.
Esta función sólo funciona en la versión de depuración de MFC.
Ejemplo
/ / ejemplo de AfxCheckMemory
Jaula * pcage = &nueva jaula (21); nbsp; / / Jaula se deriva de CObject.
Página de edad = new Age (22); / / Edad no se deriva de CObject.
pcage de *(((char*)) - 1) = 99; / / Corrupto anterior guardia byte
página de *(((char*)) - 1) = 99; / / Corrupto anterior guardia byte
AfxCheckMemory()
Los resultados del programa son los siguientes:
error de comprobación de memoria en $0067495F = $63, debería ser $FD
DAÑOS: antes objeto de no bloquear a $00674960
Objetos no asignados al archivo test02.cxx(48)
No-objeto situado en $00674960 tiene una longitud de 2 bytes
error de comprobación de memoria en $00674905 = $63, debería ser $FD
DAÑOS: antes objeto de bloquear en $00674906
Objeto asignado al archivo test02.cxx(47)
Objeto situado en $00674906 es de 6 bytes de longitud