UPDATE: Fehler durch eine ungültige Seite in "Msvcrt.dll" nach der Installation der Laufzeitbibliotheken von Visual C++ 6.0

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 190536 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
190536 FIX: You receive an "invalid page fault in module MSVCRT.DLL" error message after you install the run-time libraries from Visual C++ 6.0
Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.
Alles erweitern | Alles schließen

Problembeschreibung

Nach der Installation der C Laufzeitbibliotheken ("Msvcrt.dll") aus Visual C++ 6.0 auf Ihrem Computer schlagen Anwendungen fehl, die zuvor einwandfrei funktionierten. Außerdem wird eine Fehlermeldung angezeigt, die der folgenden ähnelt:
<Anwendungsname> verursachte einen Fehler durch eine ungültige Seite in Modul MSVCRT.DLL bei XXXX:XXXXXXXX.

Ursache

Eine mögliche Ursache für diesen Fehler liegt darin, dass die Anwendung über das Ende des Speicherblocks eines bestimmten Objekts hinaus geschrieben hat. Der Small-Block Heap-Manager, der mit den Visual C++ 6.0-Laufzeitbibliotheken ausgeliefert wird, integriert Heap-Kontrollstrukturen in den Small-Block Heap. Durch das Überschreiben des Speicherblocks werden die Adressen der Zeiger für den Small-Block Heap geändert, was zu einem ungültigen Zeiger und möglicherweise zu einem Fehler in der Datei "Msvcrt.dll" führt, wenn der Zeiger referenziert wird.

Lösung

Hersteller von Anwendungen müssen sicherstellen, dass deren Anwendungen den Small-Block-Heap in der C-Laufzeit ordnungsgemäß verwenden.

Zur Unterstützung von Kunden, bei denen dieses Problem in einer Fremdanbieter-Anwendung auftritt, stellt Microsoft eine neue C-Laufzeit-DLL (DLL = Dynamic-Link Library) namens "Msvcrt.dll" zur Verfügung, die zwei Heap-Manager implementiert: den mit Visual C++ Version 5.0 kompatiblen Heap-Manager und den mit Visual C++ Version 6.0 kompatiblen Heap-Manager. "Msvcrt.dll" erkennt die Version von Visual C++, mit der Ihre Anwendung erstellt wurde, und verwendet den geeigneten Heap-Manager für diese Anwendung. Für die Version Visual C++ 6.0 (oder höher) wird der mit Visual C++ 6.0 kompatible Heap-Manager verwendet; für eine frühere Version als Version 6.0 wird der mit Visual C++ 5.0 kompatible Heap-Manager verwendet.

Benutzer von Visual Studio 6.0 können die neue Datei "Msvcrt.dll" beziehen, indem Sie das neueste Service Pack für Microsoft Visual Studio installieren. Wenn Sie Visual Studio nicht verwenden, installieren Sie das Microsoft Bibliotheken-Update. Weitere Informationen hierzu finden Sie im folgenden Artikel der Microsoft Knowledge Base:
197298 INFO: Microsoft Bibliotheken-Update: Beschreibung, Bezugsquellen und Hintergrund

Status

Microsoft hat bestätigt, dass es sich hierbei um einen Bug bei den in diesem Artikel genannten Microsoft-Produkte handelt.

Dieser Bug wurde in Visual Studio 6.0 Service Pack 3 (SP3) behoben. Weitere Informationen über Service Packs zu Visual Studio finden Sie in folgenden Artikeln der Microsoft Knowledge Base:
194022 Visual Studio 6.0 Service Packs - Inhalt, Verfügbarkeit und Bestellung
194295 SO WIRD´S GEMACHT: Ermitteln, ob ein Visual Studio Service Pack installiert ist

Weitere Informationen

Der Small-Block Heap umfasst Reservierungen, die eine Größe von 1 KB nicht überschreiten. Bugs dieser Art führen in älteren Versionen der C-Laufzeit-Bibliothek möglicherweise zu anderen Symptomen, da die Kontrollstrukturen sich an einem anderen, separaten Speicherort befinden. Diese Arten von Codierungsfehlern führen häufig zu einer Beschädigung eines anderen Speicherblocks und unter Umständen sogar zu einem Systemabsturz. Der Ablauf von Ereignissen, der zu einer Zugriffsverletzung führte, unterscheidet sich, wenn Sie die Visual C++ 6.0-C-Laufzeit-Bibiliothekten verwenden.

Sie können diese Art von Problemen kontrollieren, indem Sie den Debug-Heap verwenden. Weitere Informationen finden Sie in der Onlinedokumentation "Using the Debug Heap". Sie müssen den Debug-Heap aktivieren, indem Sie _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF |_CRTDBG_CHECK-_ALWAYS_DF) bei der Prozessinitialisierung in einem Debugbuild Ihrer Anwendung aufrufen.

Eigenschaften

Artikel-ID: 190536 - Geändert am: Samstag, 21. Januar 2006 - Version: 3.1
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Visual C++ 6.0 Enterprise Edition
  • Microsoft Visual C++ 6.0 Professional Edition
  • Microsoft Visual C++, 32-bit Learning Edition 6.0
Keywords: 
kberrmsg kbbug kbfix kbcrt kbqfe kbvs600sp2fix kbvs600sp3fix kbhotfixserver KB190536
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

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