השחתת זיכרון


כל מה שרצית לדעת על השחתת זיכרון:
השחתת זיכרון (Memory corruption) הוא סוג של באג, אשר קורה כאשר מיקום בזיכרון מחשב או אוגר משוכתב באופן מקרי ולא מבוקר, כתוצאה משגיאה בתוכנית, תקלה בחומרה (Hard Error) או אירוע חיצוני הגורם לשינוי תוכן הזיכרון (Soft Error).
טעות כזו יכולה לגרום לקריסה מיידית של התוכנה (למשל במקרה של כתיבה לכתובת 0, התוכנית תיזרק על ידי מערכת ההפעלה בעקבות שגיאת סגמנטציה).
מנגד, ייתכן גם שהשגיאה לא תבוא לידי ביטוי למשך זמן רב, ורק עבור קלטים מסוימים יופיע פלט שגוי.
דוגמה בולטת להשחתת זיכרון היא ניסיון גישה לתא במערך כאשר הוא אינו קיים.
בעיה זו ניתן למצוא במרבית שפות התכנות, בחלקן תהיה הודעת שגיאה ובחלק – לא.
למשל בשפת התכנות C, תאים במערך מקבלים ערכים סדורים החל מ־0 ולא מ־1, ולכן למעשה התא ה־n (והאחרון) מקבל את התווית 1-n.
טעות תכנותית נפוצה היא ניסיון כתיבה לתא הלא קיים n, דבר אשר גורם להשחתת זיכרון שלא בניהול המערך (אם כי, יש לציין שרוב הסיכויים שהזיכרון הנפגע שייך לתוכנית הרצה ולא למערכת ההפעלה, כך שאין סכנה ממשית לתפקוד המחשב).

נלקח מויקיפדיה

הגדרות נוספות הקשורות להשחתת זיכרון:
תכנות
זיכרון מחשב