CORRECTIF : Après l'installation des bibliothèques Runtime de Visual C++ 6.0 sur votre ordinateur, un message d'erreur « erreur de page non valide dans le module MSVCRT.DLL » s'affiche

Traductions disponibles Traductions disponibles
Numéro d'article: 190536 - Voir les produits auxquels s'applique cet article
Cet article peut contenir des liens vers des informations en langue anglaise (pas encore traduites).
Agrandir tout | Réduire tout

Symptômes

Après l'installation des bibliothèques d'exécution C (Msvcrt.dll) de Visual C++ 6.0 sur votre ordinateur, les applications qui fonctionnaient correctement auparavant échouent et une erreur d'application semblable à ce qui suit s'affiche :
<Nom de l'application> a provoqué une erreur de page non valide dans le module MSVCRT.DLL à XXXX:XXXXXXXX.

Cause

Une cause possible de cette erreur est que l'application a dépassé le bloc de mémoire appartenant à un objet particulier. Le gestionnaire de mémoire du tas des petits blocs compris dans les bibliothèques Runtime Visual C++ 6.0 incorpore des structures de contrôle de tas dans le tas des petits blocs. L'écrasement du bloc de mémoire modifie les adresses de pointeur du tas des petits blocs, ce qui rend le pointeur incorrect et peut provoquer une erreur dans Msvcrt.dll lorsque le pointeur est référencé.

Résolution

Les fournisseurs d'applications doivent s'assurer que leurs applications utilisent le tas des petits blocs Runtime C correctement.

Pour assister les clients qui rencontrent ce problème dans leurs applications tierces, Microsoft a publié une nouvelle bibliothèque dynamique (DLL) Runtime C, Msvcrt.dll, qui implémente deux gestionnaires de tas : le gestionnaire de tas compatible avec Visual C++ 5.0 et le gestionnaire de tas compatible avec Visual C++ 6.0. Msvcrt.dll détecte la version de Visual C++ avec laquelle votre application est créée et utilise le gestionnaire de tas approprié. S'il s'agit de Visual C++ 6.0 ou version supérieure, le gestionnaire de tas compatible avec Visual C++ 6.0 est utilisé ; s'il s'agit d'une version antérieure à Visual C++ 6.0, la version compatible avec Visual C++ 5.0 est utilisée.

Les utilisateurs de Visual Studio 6.0 peuvent obtenir le nouveau fichier Msvcrt.dll en installant le dernier Service Pack Microsoft Visual Studio. Si vous n'utilisez pas Visual Studio, installez la mise à jour des bibliothèques Microsoft ; pour plus d'informations, reportez-vous à l'article suivant de la Base de connaissances Microsoft :
197298 Mise à jour des bibliothèques Microsoft : Quoi, où, pourquoi

Statut

Microsoft a confirmé l'existence de ce bogue dans les produits Microsoft figurant dans la liste des produits concernés par cet article.

Ce problème a été corrigé dans le Service Pack 3 Visual Studio 6.0. Pour plus d'informations sur les Service Packs Visual Studio, cliquez sur les numéros ci-dessous pour afficher les articles correspondants dans la Base de connaissances Microsoft.
194022 Service Packs pour Visual Studio 6.0, quoi, où, pourquoi
194295 Comment faire pour savoir si un Service Pack Visual Studio est installé

Plus d'informations

Le tas des petits blocs comprend les allocations de taille inférieure à 1 Ko. Les bogues de ce type peuvent se comporter différemment dans des versions plus anciennes de la bibliothèque Runtime C car les structures de contrôle sont situées à un emplacement différent et distinct dans la mémoire. Ces types d'erreurs de code provoquent fréquemment l'altération d'un autre bloc de mémoire et peuvent même entraîner le blocage du système. La séquence d'événements provoquant une violation d'accès est différente lorsque vous utilisez les bibliothèques Runtime C de Visual C++ 6.0.

Vous pouvez contrôler ces types de problèmes à l'aide du tas de débogage. Reportez-vous à la documentation en ligne intitulée "Tas de débogage". Vous devez activer le tas de débogage en appelant _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF |_CRTDBG_CHECK-_ALWAYS_DF) lors de l'initialisation du processus dans une version debug de votre application.

Propriétés

Numéro d'article: 190536 - Dernière mise à jour: lundi 23 janvier 2006 - Version: 3.1
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual C++ 6.0 Édition Entreprise
  • Microsoft Visual C++ 6.0 Édition Professionnelle
  • Microsoft Visual C++, 32-bit Learning Edition 6.0
Mots-clés : 
kberrmsg kbbug kbfix kbcrt kbqfe kbvs600sp2fix kbvs600sp3fix kbhotfixserver KB190536
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com