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.