מספר קסם (תכנות) – הבדלי גרסאות

תוכן שנמחק תוכן שנוסף
Xqbot (שיחה | תרומות)
שינוי שם
שורה 37:
מספרי קסם המשמשים לניפוי שגיאות הם ערכים מיוחדים, הנכתבים לכתובות ב[[זיכרון מחשב]] בעת [[הקצאה דינמית]] של זיכרון או שחרורו. הרעיון מאחורי כתיבה זו, הוא לאפשר למתכנת להבחין מיד מתי התוכנה משתמשת בערכי "זבל", כלומר בערכים שלא אותחלו, על ידי כך שהוא רואה בזיכרון המחשב (באמצעות מנפה השגיאות או זריקת זיכרון (core dump)) שהיא טוענת ומשתמשת בערך שהוא מכיר כמספר קסם.
 
לדוגמה, פונקציית ()HeapAlloc של [[מיקרוסופט]], כאשר היא מופעלת במצב ניפוי שגיאות, מקנה את הערך ה"קסום" 0xABABABAB לכל הבתים על ה[[ערימה (מבנה נתונים)|ערימה]] שלא הוקצו, אך נמצאים בסמוך לשטחים מוקצים. באופן זה קל לגלות [[גלישת חוצץ]] אל בתים אלה.
 
בשימוש במספר קסם לצורך ניפוי שגיאות גלומה הנחה [[הסתברות|הסתברותית]], שאותו מספר לא יוצב בדרך מקרה בזיכרון על ידי התוכנית כחלק מפועלה התקין. במקרה בלתי סביר זה ייתכן שמנפה השגיאות יודיע על באג שלא קיים באמת, או שיכשל בגילוי באג קיים.