Hiba meghaladta memória korlát

Hiba diagnosztizálják, amikor a folyamat a vizsgálati program több memóriát igényelnek, mint ami a korlátok a problémát. Az érvényességi diagnosztizálására ez a hiba a vita (lásd. Alább).







Diagnosztizálása meghaladó hibát a memória korlátok közé ejudge rendszerben működik, ha az értelmezés állítva patch a Linux kernel. Ha a patch nincs telepítve, a felesleges memória korlátai fognak diagnosztizálni, mint a run-time error. Emellett ejudge rendszer lehetővé teszi, hogy tiltsa le ezt a hibát diagnózis akkor is, ha a tapasz a kernel telepítve.

Bár a diagnózis ez a hiba hasznosak lehetnek a résztvevők számára, hogy debug megoldásaikat többsége helyzetek közötti határ a hiba a program végrehajtásához, és tévesen meghaladó memória korlát nagyon homályos.







Például, ha az meghaladja a maximális méret a verem annak a ténynek köszönhető, hogy a program bement egy végtelen ciklus, egy ilyen helyzetben inkább úgy kell tekinteni, mint egy hiba, amikor a program végrehajtásához. De másfelől, ha a program megpróbálta lefoglalni túl sok memóriát a veremben (például azért, mert a túlzott helyi tömb), ezt a helyzetet kell figyelembe venni, hogy az meghaladja a memória korlátok. Természetesen lehetetlen, hogy egyértelmű, egyszerű módon különbséget tenni e két helyzet között.

Másrészt például a nyelvi C malloc függvény egy NULL, ha nem tud memóriát. Ha a vizsgálati program nem ellenőrzi a NULL malloc függvény és hibaüzenetet kap egy null pointer hozzáférés, ez egy tipikus programozó hibát, és úgy kell kezelni, mint egy hiba, amikor a program végrehajtásához. Éppen ellenkezőleg, a program lehet fogni a helyzet, amikor malloc vissza NULL, és módosíthatja a viselkedésüket (például takarítás a hash tábla).




Kapcsolódó cikkek