Korriger: Du får en "ugyldig sidefeil i modulen MSVCRT. DLL"-feilmelding når du installerer kjøretid-bibliotekene fra Visual C++ 6.0


Symptomer


Når du installerer C Runtime biblioteker (Msvcrt.dll) fra Visual C++ 6.0 på datamaskinen, hvilke programmer som tidligere kjørte riktig mislykkes og en programfeil som ligner på følgende vises:
< programnavn > forårsaket en ugyldig sidefeil i modulen MSVCRT. DLL på xxxx: xxxxxxxx.

Årsak


En mulig årsak til denne feilen er at programmet er skrevet forbi minneblokk som eies av et bestemt objekt. Liten blokk heapmemory-manager som leveres med biblioteker for kjøring i Visual C++ 6.0 inneholder heap kontrollstrukturer i små blokk-heap. Overskriver minneblokk endrer liten blokk heap pekeren adresser, at det påvirker prosjektets en ugyldig peker og muligens en feil i Msvcrt.dll når pekeren er referert.

Løsning


Programleverandører, må du sørge for at programmene bruker C kjøretid liten blokk heap på riktig måte.

Microsoft har gitt ut en ny C Runtime dynamiske koblingsbiblioteket (DLL), Msvcrt.dll, som implementerer to heap-ledere for å hjelpe kunder som opplever dette problemet i sine tredjepartsprogrammer,: Visual C++ 5.0-kompatibel-heap-behandling i versjon og Visual C++ versjon 6.0-kompatible heap-behandling. Msvcrt.dll finner ut hvilken versjon av Visual C++ er bygget med programmet og bruker riktig heap-behandling for dette programmet. Hvis versjonen er Visual C++ 6.0 eller høyere, brukes i Visual C++ 6.0-kompatible heap-behandling. Hvis versjonen er eldre enn versjon 6.0, brukes Visual C++ 5.0-kompatible heapen.

Visual Studio 6.0-brukere kan få den nye Msvcrt.dll-filen ved å installere Microsoft Visual Studio oppdateringspakken. Hvis du ikke bruker Visual Studio, Installer oppdateringen for Microsoft-biblioteker; Hvis du vil ha mer informasjon, kan du se følgende artikkel i Microsoft Knowledge Base:
197298 bibliotek for Microsoft update: Hva, hvor og hvorfor

Status


Microsoft har bekreftet at dette er en feil i Microsoft-produktene som er oppført i delen "Gjelder for".

Denne feilen ble korrigert i Visual Studio 6.0 Service Pack 3.
Hvis du vil ha mer informasjon om Visual Studio-oppdateringspakker, klikker du artikkelnumrene nedenfor for å vise artiklene i Microsoft Knowledge Base:

194022 visual Studio 6.0 service pakker, hva, hvor og hvorfor

194295 hvordan du kan avgjøre at en oppdateringspakke for Visual Studio er installert

Hvis du vil ha mer informasjon


Liten blokk-heap består av tildelinger som er mindre enn 1 kB. Feil av denne typen kan virke annerledes i eldre versjoner av C-kjøretidsbibliotek fordi kontrollstrukturer befinner seg i en annen og egen plassering i minnet. Disse typene koding feil fører ofte, ødeleggelse av en annen blokk med minne og muligens et krasj. Rekkefølgen av hendelser som kan føre til brudd på tilgangstillatelse er annerledes når du bruker Visual C++ 6.0 C Runtime-biblioteker.

Du kan kontrollere slike problemer ved hjelp av debug-heap. Se den elektroniske dokumentasjonen med tittelen "Bruke Debug-Heap". Du må aktivere debug-heap ved å kalle _CrtSetDbgFlag (_CRTDBG_ALLOC_MEM_DF | _CRTDBG_CHECK-_ALWAYS_DF) ved initialisering av prosessen i en debug-versjon av programmet.