Bonjour,
J'ai un problème avec Codeguard.
J'ai développé une DLL avec C++ builder 6. Cette DLL est utilisé par une application développé en .NET avec Visual Studio. Si je compile ma DLL avec Codeguard activé et que je debugge ma DLL (en spécifiant mon application .NET comme hôte), j'ai systématiquement une violation d'accès lors de la fermeture de mon application, et jamais codeguard ne me montre les fuites mémoires (alors que je sais pertinement qu'il y en a).
Si par exemple, j'ajoute volontairement des accès à de la mémoire libérée, Codeguard me les détecte très bien, le debugguer s'arrête bien au bon endroit, tout est ok.
Dans tout les cas, même s'il n'y a aucune fuite mémoire ni aucun problème d'aucune sorte, j'ai systématiquement cette violation d'accès. Builder s'arrête pour me la signifier, et si je continue l'exécution, j'en ai une autre, et ainsi de suite, ad eternam.
Voici la pile d'appels au moment de cette violation d'accès :
__init_exit_proc
__startupd
Extctrls
ntdll.dll
KERNEL32.dll
KERNEL32.dll
c:\windows\Microsoft.NET\Framework\v1.1.4322\mscorwks.dll
c:\windows\Microsoft.NET\Framework\v1.1.4322\mscorwks.dll
KERNEL32.dll
J'ai l'impression que la violation d'accès se produit au déchargement de la DLL et que du coup, jamais codeguard n'est en mesure de me montrer les fuites mémoires en vérifiant les blocs non désalloués.
Bref, savez-vous comment utiliser codeguard dans une DLL utilisée par une application écrite en code managée ?
Merci d'avance,
Olivier
Partager