Pergunta

_CrtDumpMemoryLeaks(); Se você não sabia, é uma função que despeja todos os vazamentos de memória em um programa. Atualmente, o meu exibe que tenho um vazamento de memória de 3632062 bytes (não está sendo desalocado).

Fiquei me perguntando: existe alguma maneira de causar o Visual C ++ Express quando uma certa quantidade de bytes foi alocada? Dessa forma, eu poderia quebrar quando 3632062 bytes foram alocados e, em seguida, leia o rastreamento da pilha para ver onde eu o alocou.

Atualmente, esse é o único método que consigo pensar para descobrir onde a memória está sendo alocada para que eu possa corrigi -lo. Eu tenho pesquisado muito meu código, mas não consigo encontrar em nenhum lugar onde eu precise alocar 3632062 bytes (já que o único arquivo que carrego é 2767136 bytes ..) Embora eu tenha certeza de que o vazamento está relacionado ao arquivo que eu ' m operando em.

Alguma idéia para encontrar a fonte do vazamento de memória? Estou usando C ++ nativo, Visual C ++ 2010

Foi útil?

Solução

Você poderia fazer isso usando _CrtSetAllochook Para rastrear o uso total da memória.

Umdh dará a você uma lista de blocos alocados em todos os heaps. Isso pode ser o que você deseja, pois quebrar um determinado limite total de aloces não lhe dirá onde todos os blocos foram alocados.

Outras dicas

Eu já usei isso detector de vazamento de memória simples com bom sucesso para encontrar vazamentos de memória.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top