Domanda

_CrtDumpMemoryLeaks(); se non si sa, è una funzione che scarica tutte le perdite di memoria in un programma. Miniera attualmente display che ho una perdita di memoria 3.632.062 byte (non è in fase di deallocata).

Mi chiedevo: C'è un modo per causare Visual C ++ Express per rompere quando una certa quantità di byte è stato allocato? In questo modo ho potuto rompersi quando 3632062 byte sono stati assegnati, poi leggere l'analisi dello stack per vedere dove mi destinarlo.

Questo è attualmente l'unico metodo che posso pensare per ritrovamento dove la memoria viene allocata in modo da poter risolvere il problema. Ho cercato il mio codice molto ma non riesco a trovare da nessuna parte in cui avrei bisogno di allocare 3632062 byte (dal momento che l'unico carico file è 2767136 byte ..) anche se sono certo la perdita è correlato al file' m operativo.

Tutte le idee per trovare la fonte della perdita di memoria? Sto utilizzando nativo C ++, Visual C ++ 2010

È stato utile?

Soluzione

Si potrebbe fare questo usando _CrtSetAllocHook per monitorare l'utilizzo di memoria totale.

UMDH vi darà una lista di blocchi allocati in tutti i cumuli. Questo potrebbe essere quello che si vuole, dal momento che la rottura a colpire una determinata soglia totale alloc non vi dico dove tutti i blocchi sono stati assegnati.

Altri suggerimenti

Ho usato questa memoria semplice perdita rivelatore buon successo per la ricerca di perdite di memoria.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top