Funções de emissão de relatórios do estado de heap
This topic applies to:
Edition |
Visual Basic |
C# |
F# |
C++ |
Web Developer |
---|---|---|---|---|---|
Express |
Native only |
||||
Pro, Premium e Ultimate |
Native only |
Várias funções de reportam o conteúdo da pilha de depuração em um dado momento.
_CrtMemState
Para capturar um resumo instantâneo do estado da pilha em um determinado momento, use a estrutura de _CrtMemState definida em CRTDBG.H:
typedef struct _CrtMemState
{
// Pointer to the most recently allocated block:
struct _CrtMemBlockHeader * pBlockHeader;
// A counter for each of the 5 types of block:
size_t lCounts[_MAX_BLOCKS];
// Total bytes allocated in each block type:
size_t lSizes[_MAX_BLOCKS];
// The most bytes allocated at a time up to now:
size_t lHighWaterCount;
// The total bytes allocated at present:
size_t lTotalCount;
} _CrtMemState;
Essa estrutura salva um ponteiro para o primeiro bloco (mais recentemente alocado) na lista vinculada da heap de depuração. Em seguida, em duas matrizes, ele registra a bloquear quantos de cada tipo de memória (_NORMAL_BLOCK, _CLIENT_BLOCK, _FREE_BLOCK, e assim por diante) estão na lista e o número de bytes alocados em cada tipo de bloco. Finalmente, ele registra o maior número de bytes alocados no heap como um todo até esse ponto e o número de bytes alocados no momento.
Outras funções de emissão de relatórios de CRT
As seguintes funções relatam o estado e o conteúdo da pilha e usam as informações para ajudar a detectar vazamentos de memória e outros problemas.
Function |
Description |
---|---|
Salva um instantâneo da pilha em uma estrutura _CrtMemState fornecida pelo aplicativo. |
|
Compara duas estruturas de estado de memória, salva a diferença entre eles em uma estrutura de estado de terceira e retorna verdadeiro se os dois estados são diferentes. |
|
Despeja uma estrutura de dado _CrtMemState. A estrutura pode conter um instantâneo do estado da pilha de depuração em um determinado momento ou a diferença entre dois instantâneos. |
|
Despeja as informações sobre todos os objetos alocados desde uma determinada foi instantâneo da pilha ou desde o início da execução. Toda vez que ele Despeja um _CLIENT_BLOCK bloco, ele chama uma função de gancho fornecida pelo aplicativo, se um tiver sido instalado usando _CrtSetDumpClient. |
|
Determina se qualquer memória vazamentos ocorreu desde o início da execução do programa e, em caso afirmativo, despeja a todos os objetos alocados. Sempre que _CrtDumpMemoryLeaks Despeja um _CLIENT_BLOCK bloco, ele chama uma função de gancho fornecida pelo aplicativo, se um tiver sido instalado usando _CrtSetDumpClient. |