עזרה ב-C++ - Heap Corruption Detected - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

עזרה ב-C++ - Heap Corruption Detected


GuglyBu

Recommended Posts

היי חבר'ה, אשמח אם תוכלו לעזור לי בקוד C++ שאני כותב.

בזמן דיבוג התכנית, אני מקבל את השגיאה הבאה:

"Debug Error! Program: HEAP CORRUPTION DETECTED: before normal block (#1059) at . CRT detected that the application wrote to memory before start of heap buffer"

השורה שנופלת היא

delete[] BlockArray_; (שחרור זכרון)

ואין לי שמץ של מושג למה.

אם מישהו יוכל להציל אותי פה אני אודה לו לעד.

תודה רבה!!

קישור לתוכן
שתף באתרים אחרים

יש לך פה דברים לא ברורים.

למה הבנאי של cache מגדיר את numofblocks, אם לא נראה שהוא עושה בו שימוש?

מה הפרמטרים שאתה מכניס לבנאי של cache מבחינת size וbsize?

קישור לתוכן
שתף באתרים אחרים

הבאתי לפה רק את הפונקציות שרלוונטיות להקצאות זכרון/שחרור . יש עוד כל מיני פונקציות שמשתשות בנתונים האלה, אך לא קשורות להקצאות דינאמיות/שחרורים (לדוגמא: כל מיני print וכו')

קישור לתוכן
שתף באתרים אחרים

מצאתי את הטעות, אשמח לשתף עם כל מי שאי פעם נתקל בבעיה כזאת - אני אישית שרפתי על זה יומיים... בכלל לא חיפשתי במקום הנכון

הטעות היתה שבאיזשהו מקום בתכנית ביצעתי כתיבה למקום לא חוקי במערך (מקום -1). התכנית עבדה, בזמן ריצה הוא אכן כתב ערכים למקום לא שלי במערך (טעות חמורה! לכו תדעו בזכרון של מי נגעתי...), אבל רק כשניסיתי לשחרר את הזכרון הזה, הוא נפל...

בכל מקרה, המון המון תודה לעוזרים!

(אני אמחק את קטעי הקוד שלי כדי לא לבלבל אנשים שאולי יתקלו בפוסט הזה בעתיד)

קישור לתוכן
שתף באתרים אחרים

אם יש משהו שאפשר ללמוד מהסיפור הזה הוא שבסביבה לא מנוהלת (שבה אתה מנהל את הזכרון בעצמך במקום שהסביבה תעשה זאת) - יש המון המון אפשרויות לבאגים של גלישה / דריסה / דליפה. ולא תמיד המקום שבו תראה את הבעיה יהיה קשור או קרוב למקום שבו נגרמה הבעיה. ומסיבה זו סביבות לא מנוהלות הן מאוד מורכבות, ובבואי לכתוב תכנית מעשי, הייתי נמנע מהן בכל מצב שבו זה אפשרי. :)

קישור לתוכן
שתף באתרים אחרים

אם יש משהו שאפשר ללמוד מהסיפור הזה הוא שבסביבה לא מנוהלת (שבה אתה מנהל את הזכרון בעצמך במקום שהסביבה תעשה זאת) - יש המון המון אפשרויות לבאגים של גלישה / דריסה / דליפה. ולא תמיד המקום שבו תראה את הבעיה יהיה קשור או קרוב למקום שבו נגרמה הבעיה. ומסיבה זו סביבות לא מנוהלות הן מאוד מורכבות, ובבואי לכתוב תכנית מעשי, הייתי נמנע מהן בכל מצב שבו זה אפשרי. :)

I couldn't agree more...

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...