Pregunta

Veo una salida como ésta en mi archivo DMP:

Heap entries for Segment00 in Heap 00150000
    00150640: 00640 . 00040 [01] - busy (40)
    00150680: 00040 . 01808 [01] - busy (1800)
    00151e88: 01808 . 00210 [01] - busy (208)
    00152098: 00210 . 00228 [00]
    001522c0: 00228 . 00030 [01] - busy (22)
    001522f0: 00030 . 00018 [01] - busy (10)
    00152308: 00018 . 00048 [01] - busy (3c)

Los documentos WINDBG dicen lo siguiente:

    Heap entries for Segment00 in Heap 250000
                        0x01 - HEAP_ENTRY_BUSY            
                        0x02 - HEAP_ENTRY_EXTRA_PRESENT   
                        0x04 - HEAP_ENTRY_FILL_PATTERN    
                        0x08 - HEAP_ENTRY_VIRTUAL_ALLOC   
                        0x10 - HEAP_ENTRY_LAST_ENTRY      
                        0x20 - HEAP_ENTRY_SETTABLE_FLAG1  
                        0x40 - HEAP_ENTRY_SETTABLE_FLAG2  
Entry     Prev    Cur   0x80 - HEAP_ENTRY_SETTABLE_FLAG3  

Address   Size    Size  flags       (Bytes used)    (Tag name)
00250000: 00000 . 00b90 [01] - busy (b90)
00250b90: 00b90 . 00038 [01] - busy (38) 
00250bc8: 00038 . 00040 [07] - busy (24), tail fill (NTDLL!LDR Database)

El espacio es raro en la documentación sin embargo. Hace que 'dirección de entrada' media y 'tamaño Anterior' y 'Tamaño cur', o es el 'entrada' 'Anterior' y 'act' no para la línea de abajo?

¿Qué significa 'tamaño Anterior' y 'Tamaño act' media? Especialmente con respecto a 'bytes utilizados'. ¿Cuál es la diferencia entre 'bytes utilizados' y 'act tamaño'?

¿Fue útil?

Solución

Un montón segmento es un bloque continuo de memoria para un montón dada. También es una cadena de entradas montón.

Para caminar una lista de entradas montón remitimos podemos usar el tamaño del Cur como una compensación para llegar a la siguiente entrada montón.

Para caminar una lista de entradas del montón hacia atrás podemos usar el tamaño Anterior como una compensación para llegar al principio de la entrada anterior.

Aquí (foto de abajo) se puede ver la psize (tamaño anterior) y su relación con el tamaño (tamaño actual) para la entrada justo antes de la misma.

 depurador de salida pic

Los Bytes utilizados se calcula restando el tamaño de la el número de bytes no utilizados al final de este bloque que no fueron realmente asignados. Esto le permite determinar el tamaño de la asignación que se solicitó antes de doblar el tamaño solicitado a la granularidad de asignación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top