Partilhar via


Tipos de blocos no Heap depurar

Este tópico se aplica a:

Edição

Visual Basic

C#

C++

Desenvolvedores Web

Express

Somente nativo

Padrão

Somente nativo

PRO e equipe

Somente nativo

Legenda de tabela:

Aplica-se

Não é aplicada

Comando ou comandos oculta por padrão.

Cada bloco de memória na depurar heap é atribuído a um dos cinco tipos de alocação.Esses tipos são controlados e relatados diferente para fins de detecção de vazamento e emissão de relatórios do estado.Você pode especificar o tipo do bloco alocando-lo usando uma telefonar direta para uma das funções de alocação de heap depurar, sistema autônomo _malloc_dbg.sistema autônomo cinco tipos de blocos de memória na pilha de depurar (definido no nBlockUse membro do _CrtMemBlockHeader estrutura) são sistema autônomo seguintes:

  • _NORMAL_BLOCK
    Uma telefonar para malloc or calloc cria um bloco normal.Se você pretende usar apenas blocos normal e não há necessidade para blocos de cliente, convém definir _CRTDBG_MAP_ALLOC, que faz com que todas as chamadas de alocação de heap a serem mapeados para seus equivalentes de depurar no depurar se baseia.Isso permitirá que o arquivo de nome e linha números informações sobre cada telefonar de alocação a ser armazenada no cabeçalho do bloco correspondente.

  • _CRT_BLOCK
    sistema autônomo blocos de memória alocados internamente por muitas funções de biblioteca de time de execução são marcados sistema autônomo CRT blocos para que eles podem ser manipulados separadamente.Vazam sistema autônomo resultado, a detecção e outras operações não precisam ser afetadas por eles.Uma alocação nunca deve alocar, realocar ou libere qualquer bloco do tipo CRT.

  • _CLIENT_BLOCK
    Um aplicativo pode manter controle especial de um agrupar específico de alocações para fins de depurar alocando-los sistema autônomo esse tipo de bloco de memória, usando chamadas explícitas para sistema autônomo funções de heap de depurar.MFC, por exemplo, aloca todos sistema autônomo CObjects sistema autônomo blocos de cliente; outros aplicativos podem manter objetos diferentes de memória em blocos de cliente.Subtipos de blocos de cliente também podem ser especificados para maior granularidade de acompanhamento.Para especificar os subtipos de blocos de cliente, deslocar o número à esquerda de 16 bits e OR -a com _CLIENT_BLOCK. Por exemplo:

    #define MYSUBTYPE 4
    freedbg(pbData, _CLIENT_BLOCK|(MYSUBTYPE<<16));
    

    Uma função de gancho do cliente para despejar os objetos armazenados em blocos de cliente pode ser instalada usando _CrtSetDumpClient e irão, em seguida, ser chamado sempre que um bloco de cliente será despejado por uma função de depurar.Além disso, _CrtDoForAllClientObjects pode ser usado para telefonar uma determinada função fornecida pelo aplicativo para cada bloco de cliente no heap de depurar.

  • _FREE_BLOCK
    Normalmente, blocos são liberados são removidos da lista.Para verificar que memória liberada será que ainda não está sendo gravado ou para simular condições de baixa memória, você pode optar por manter blocos liberados na lista vinculada, marcada sistema autônomo disponível e preenchida com um valor de byte conhecidos (no momento 0xDD).

  • _IGNORE_BLOCK
    É possível desativar as operações de heap de depurar para um período de time.Durante esse time, blocos de memória são mantidos na lista, mas são marcados sistema autônomo ignorar blocos.

Para determinar o tipo e subtipo de um determinado bloco, use a função _CrtReportBlockType e as macros _BLOCK_TYPE and _BLOCK_SUBTYPE.sistema autônomo macros são definidas da seguinte maneira (em crtdbg.h):

#define _BLOCK_TYPE(block)          (block & 0xFFFF)
#define _BLOCK_SUBTYPE(block)       (block >> 16 & 0xFFFF)

Consulte também

Referência

_CrtReportBlockType

Outros recursos

A Heap depurar CRT