Megosztás a következőn keresztül:


C3859-ös fordító hiba

Nem sikerült virtuális memóriát létrehozni a PCH-hoz

Az üzenet a következő megjegyzések egyikével rendelkezik:

A rendszer visszaadott kódhibakódja: operációs rendszer hibaüzenete
PCH: A cím nem a rendszer foglalási részletességének többszöröse
PCH: Az adattömb korábban nem volt lefoglalva
PCH: A véglegesítés mérete túl nagy
PCH: Nem sikerült véglegesíteni a memóriát a fájltérképen
PCH: Az összes bájt véglegesítése előtt kimerült adattömblista
PCH: Adatszegmens lista váratlan vége memória felszabadítás közben.
PCH: A decommit esetén nem szabad fájltérképet használni.
PCH: Érvénytelen adattömb
PCH: A térkép mérete túl nagy
PCH: Nem sikerült leképezni a fájlt: a memória már lefoglalt
PCH: A fájltérkép már a helyén van
PCH: Nem sikerült lekérni a kért memóriablokkot
Fontolja meg a /Fp használatát, hogy a fordító korán lefoglalhassa a memóriát

Megjegyzések

Az előre összeállított fejléchez (PCH) nincs elegendő lefoglalt virtuális memória. Ha az előre összeállított fejléc explicit #pragma hdrstop direktívát használ, a /Zm fordító jelölővel adjon meg egy nagyobb értéket az előre összeállított fejlécfájlhoz. Ellenkező esetben fontolja meg a párhuzamos fordítási folyamatok számának csökkentését a buildben. További információ: /Zm (Előre összeállított fejléc memóriafoglalási korlátjának megadása).

Ez a diagnosztika többnyire két forgatókönyvben jelenik meg:

Az első forgatókönyv az, hogy a rendszer egyszerre több /Yu fordítási kéréssel van túlterhelve. A virtuális memória maximális méretének beállítása általában megoldja ezt a problémát.

A második forgatókönyv az, amikor a Windows-betöltő egy DLL-t injektál a folyamatba indításkor. Az injektált DLL lefoglalhat olyan memóriát, amely ütközik a PCH helyével. Például msbuild.exe minden CL.exe folyamatba injektálja FileTracker.dll az indításkor. Ebben a forgatókönyvben a /Fp (Name .pch fájl) jelzővel biztosítható, hogy a PCH memóriája a lehető leghamarabb lefoglalva legyen a CL.exe folyamat során, mielőtt a beszúrt DLL-ek megpróbálják elfoglalni a címteret. Ezek a hibák időszakosak lehetnek, mert a Windows címtérelrendezésének véletlenszerűsége (ASLR) különböző címeken foglal le memóriát a különböző folyamathívások között. /Fp hiányában a PCH számára szükséges memória nem foglalható le addig, amíg a fordítóprogram nem találja meg a #include fejlécfájlt, amelyet a /Yu parancssori opcióban vagy a #pragma hdrstop megadtak. Ekkor már sokkal valószínűbb, hogy a PCH által igényelt memória már foglalt.