עזרה בפתרון בעיית זליגת זיכרון ב C++

sapir7000

New member
שלום רב,

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

אני מצרף את כל הקבצים כולל קובץ הבדיקה.
אשמח ממש אם מישהו יוכל לתת לי כיוון מה הבעיה.
תודה מראש.
 

BravoMan

Active member
הקבצים לא צורפו.

אבל, בגדול, ב-++C במיוחד מודרני רצוי להימנע מהקצעה דינאמית ידנית.
כמובן, במסגרת הלימודים ייתכן שזה לא אפשרי, אבל השפה אמורה להכיל מספיק כלים כדי לאפשר זאת בקוד אמתי.
 

sapir7000

New member
לצערי זה לא נותן לי אפשרות להעולות את הקבצים כמו שצריך אני מעלה קובץ txt עם הספרייה (Product.h) המימוש (Product.cpp) והקובץ בדיקה (Pro_test.cpp)
 

sapir7000

New member
משום מה אני לא מצליח להעלות שום קובץ.
מצטער.

לגבי ההקצאה הדינאמית ברגע שאני רוצה לכתוב קלאס שיש לו משתנים מסוג פרייבט שהם פויינטרים אני חייב להקצות זיכרון (למשל לשמירה של שם של מוצר בדוגמה שאני מדבר עליה)
האם יש דרך לעשות זאת ללא הקצאת זיכרון באמצעות פונקציית new?
 

BravoMan

Active member
אתה יכול להשתמש באתר כמו pastebin.com כדי לשתף קוד בקלות ובנוחות.
הם אפילו לא מחייבים אותך לפתוח משתמש, אם כי זה אומר שהקוד יעלם לאחר זמן מה (אם אני זוכר נכון).

מעבר לכך, אם היית רוצה לשמור משהו כמו "שם מוצר" בשפת ++C היית משתמש באיבר (משתנה) מסוג std::string והוא היה מטפל בהקצאות לבד.
אם המורה מכריח אותך להשתמש ב- * char זה אולי טוב ללימודים, אבל לא נחשב "++C" בעולם האמתי.
 
למעלה