Question

_CrtDumpMemoryLeaks(); si vous ne saviez pas, est une fonction qui sauvegarde toutes les fuites de mémoire dans un programme. Mines actuellement affiche que j'ai une fuite de mémoire 3632062 octets (il est pas désallouée).

Je me demandais: Est-il possible de provoquer Visual C ++ Express pour briser quand une certaine quantité d'octets a été alloué? De cette façon, je pouvais briser quand 3632062 octets ont été attribués, alors lisez la trace de la pile pour voir où je lui étaient allouées.

Il est actuellement la seule méthode que je peux penser pour trouver où la mémoire est allouée afin que je puisse le corriger. J'ai cherché mon code beaucoup mais je ne trouve nulle part où je aurais besoin d'allouer 3632062 octets (puisque le seul fichier que je charge est 2767136 octets ..) bien que je suis certain que la fuite est liée au fichier I » m exploitation sur.

Toutes les idées pour trouver la source de la fuite de mémoire? J'utilise natif C ++, Visual C ++ 2010

Était-ce utile?

La solution

Vous pouvez le faire en utilisant _CrtSetAllocHook pour suivre l'utilisation de la mémoire totale.

UMDH vous donnera une liste de blocs attribués dans tous les tas. Cela pourrait être ce que vous voulez, depuis la rupture de frapper un seuil alloc total donné ne sera pas vous dire où tous les blocs ont été attribués.

Autres conseils

Je l'ai déjà utilisé cette simple, détecteur de fuite mémoire avec bon succès pour trouver des fuites de mémoire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top