Remediere: Primiți o "invalid page fault in module MSVCRT. Mesaj de eroare DLL"după ce instalați run-time biblioteci de Visual C++ 6.0


Simptome


După ce instalați biblioteci C Runtime (Msvcrt.dll) de la Visual C++ 6.0 pe computerul dvs., aplicațiile care anterior executat corect fail și o aplicație eroare similar cu următorul apare:
< nume aplicație > cauzată de o eroare de pagină nevalidă în modul MSVCRT. DLL în XXXX:XXXXXXXX.

Cauza


O cauză posibile pentru această eroare este că aplicația a scris trecut bloc de memorie care este deținută de un anumit obiect. Managerul de bloc de mici heapmemory cu Visual C++ 6.0 run-time biblioteci încorporează heap structurile de control în memoria heap bloc de mici. Suprascrierea bloc de memorie se schimbă mici bloc heap indicatorul adrese, efectuarea indicator defecte și, eventual, o eroare în Msvcrt.dll când indicatorul se face referire.

Rezolvare


Furnizorii de aplicații trebuie să se asigure că aplicațiile folosind C run-time mici bloc heap corect.

Pentru a ajuta clienții care întâmpină această problemă în aplicațiile terțe, Microsoft a lansat un nou C Runtime biblioteca cu legare dinamică (DLL), Msvcrt.dll, care implementează două managerii de memorie heap: Visual C++ versiunea 5.0 compatibil heap manager și Visual C++ versiunea 6.0 compatibil heap manager. Msvcrt.dll detectează ce versiune de Visual C++ este construit cu aplicația și utilizează Managerul de memorie heap corespunzător pentru acea aplicație. Dacă versiunea Visual C++ 6.0 sau mai mare, se utilizează manager Visual C++ 6.0 compatibil heap; Dacă versiunea anterioară versiunii 6.0, se utilizează memoria heap a Visual C++ 5.0 compatibil.

Visual Studio 6.0 utilizatorii pot obține noul fișier Msvcrt.dll instalând cele mai recente Microsoft Visual Studio Service Pack. Dacă nu utilizați Visual Studio, instalați actualizarea Microsoft biblioteci; pentru informaţii suplimentare, consultaţi următorul articol din baza de cunoștințe Microsoft:
197298 biblioteci Microsoft update: ce, unde, de ce

Stare


Microsoft a confirmat că aceasta este o problemă în produsele Microsoft enumerate în secțiunea "Se aplică la".

Această problemă a fost corectată în Visual Studio 6.0 Service Pack 3.
Pentru mai multe informații despre pachetele service pack Visual Studio, faceți clic pe următoarele numere de articol pentru a vedea articolele în baza de cunoștințe Microsoft:

194022 visual Studio 6.0 service pack ce, unde, de ce

194295 cum să vă dați seama că este instalat un pachet de service pack Visual Studio

Mai multe informații


Memoria heap mici bloc cuprinde alocări care sunt mai puțin de 1K în dimensiune. Erori de natura aceasta poate se comporte diferit în versiunile mai vechi de biblioteca C run-time, deoarece structurile de control se află într-o altă locație separată în memorie. Deseori, aceste tipuri de erori de codificare ca rezultat deteriorarea de un alt bloc de memorie și, eventual, o cădere. Secvența de evenimente care duce la o încălcare de acces sunt diferite atunci când utilizați bibliotecile Visual C++ 6.0 C Runtime.

Se poate controla aceste tipuri de probleme utilizând memoria heap de depanare. Consultați documentația online intitulat, "Utilizarea Heap de depanare." Trebuie să activați heap depanare prin apel _CrtSetDbgFlag (_CRTDBG_ALLOC_MEM_DF | _CRTDBG_CHECK _ALWAYS_DF) în procesul de inițializare în o compilare de depanare a aplicației.