Comparação de estado da memória

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.

Outra técnica para localizar vazamentos de memória envolve tomar snapshots do estado de memória do aplicativo em pontos-chave.A biblioteca do CRT fornece um tipo de estrutura, _CrtMemState, que pode ser usada para armazenar um instantâneo do estado de memória:

_CrtMemState s1, s2, s3;

Para fazer um instantâneo do estado de memória em um determinado ponto, passe um _CrtMemState estrutura de a _CrtMemCheckpoint função.Esta função preenche a estrutura com um instantâneo do estado corrente de memória:

_CrtMemCheckpoint( &s1 );

Despeje o Sumário de um _CrtMemState estrutura a qualquer momento passando a estrutura para o _CrtMemDumpStatistics função:

_CrtMemDumpStatistics( &s1 );

Esta função imprime um despejo de informações de alocação de memória que tem esta aparência:

0 bytes in 0 Free Blocks.
0 bytes in 0 Normal Blocks.
3071 bytes in 16 CRT Blocks.
0 bytes in 0 Ignore Blocks.
0 bytes in 0 Client Blocks.
Largest number used: 3071 bytes.
Total allocations: 3764 bytes.

Para determinar se um perda de memória ocorreu em uma seção de código, você pode tirar instantâneos de estado de memória antes e após a seção e use _CrtMemDifference para comparar dois estados:

_CrtMemCheckpoint( &s1 );
// memory allocations take place here
_CrtMemCheckpoint( &s2 );

if ( _CrtMemDifference( &s3, &s1, &s2) )
   _CrtMemDumpStatistics( &s3 );

sistema autônomo o nome implica, _CrtMemDifference compara dois () memória Estadoss1 e s2) e produz um resultado (s3) ou seja, a diferença de dois estados. Colocando _CrtMemCheckpoint chama no início e participante do seu programa e usando _CrtMemDifference comparar os resultados é outra forma para verificar se há vazamentos de memória. Se for detectado um vazamento, você pode usar _CrtMemCheckpoint chamadas para dividir seu programa e localizar o vazamento usando a técnica de busca binário.

Consulte também

Conceitos

Isolamento e detecção de perda de memória