עבור לתוכן

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

Featured Replies

פורסם

היי חבר'ה, אשמח אם תוכלו לעזור לי בקוד 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_; (שחרור זכרון)

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

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

תודה רבה!!

נערך על-ידי GuglyBu

פורסם

תערוך את ההודעה במצב מתקדם ושים את הקוד בתוך תגית הקוד

פורסם

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

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

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

פורסם
  • מחבר

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

פורסם

אולי התקלה נובעץ מטעות בפונקציות אחרות בכלל. ,למה שלא תוסיף קוד שמשחזר את הבעיה?

פורסם
  • מחבר

**עריכה**

הטעות נמצאה, לא קשורה להקצאות/שחרורים. התשובה נמצאת בתגובה בסוף. סליחה על הבלאגן והמון תודה!

המון המון תודה!

נערך על-ידי GuglyBu

פורסם
  • מחבר

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

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

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

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

פורסם

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

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

I couldn't agree more...

ארכיון

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

דיונים חדשים