Comment déboguer un dépassement de mémoire tampon dans Visual C++ 9?

J'ai un énorme MMC snapin écrit en Visual C++ 9. Chaque fois que dans un certain temps, quand j'appuie sur F5 dans la console MMC mmc.exe se bloque. Si je attacher un débogueur je vois le message suivant:

D'un dépassement de tampon a eu lieu dans mmc.exe qui a corrompu le programme interne de l'état. Appuyez sur Pause pour déboguer le programme ou Continuer pour terminer le programme.

Pour plus de détails, veuillez consulter la rubrique d'Aide "Comment déboguer Dépassement de la mémoire Tampon Problèmes".

Tout d'abord, il n'y a pas Comment déboguer les Problèmes de Saturation de la mémoire Tampon sujet n'importe où.

Quand j'ai inspecter la pile d'appel, je vois que c'est probablement quelque chose avec des cookies de sécurité utilisé pour se prémunir contre la pile de mémoire tampon allouée: les dépassements de

MySnapin.dll!__crt_debugger_hook()  Unknown
MySnapin.dll!__report_gsfailure()  Line 315 + 0x7 bytes C
mssvcr90d.dll!ValidateLocalCookies(void (unsigned int)* CookieCheckFunction=0x1014e2e3, _EH4_SCOPETABLE * ScopeTable=0x10493e48, char * FramePointer=0x0007ebf8)  + 0x57 bytes  C
msvcr90d.dll!_except_handler4_common(unsigned int * CookiePointer=0x104bdcc8, void (unsigned int)* CookieCheckFunction=0x1014e2e3, _EXCEPTION_RECORD * ExceptionRecord=0x0007e764, _EXCEPTION_REGISTRATION_RECORD * EstablisherFrame=0x0007ebe8, _CONTEXT * ContextRecord=0x0007e780, void * DispatcherContext=0x0007e738)  + 0x44 bytes    C
MySnapin.dll!_except_handler4(_EXCEPTION_RECORD * ExceptionRecord=0x0007e764, _EXCEPTION_REGISTRATION_RECORD * EstablisherFrame=0x0007ebe8, _CONTEXT * ContextRecord=0x0007e780, void * DispatcherContext=0x0007e738)  + 0x24 bytes C
ntdll.dll!7c9032a8()    
[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll] 
ntdll.dll!7c90327a()    
ntdll.dll!7c92aa0f()    
ntdll.dll!7c90e48a()    
MySnapin.dll!IComponentImpl<CMySnapin>::GetDisplayInfo(_RESULTDATAITEM * pResultDataItem=0x0007edb0)  Line 777 + 0x14 bytes C++
//more Win32 libraries functions follow

J'ai beaucoup de code, mais aucune idée de l'endroit où le dépassement de mémoire tampon peut se produire et pourquoi. J'ai trouvé ce forum de discussion et plus précisément le conseiller à remplacer tous les wcscpy-comme pour les fonctions avec des versions plus sécurisées comme wcscpy_s(). J'ai suivi les conseils et qui n'a pas à me rapprocher de la solution du problème.

Comment corriger mon code et trouver pourquoi et où le dépassement de mémoire tampon se produit avec Visual Studio 2008?

OriginalL'auteur sharptooth | 2010-06-22