שאלה C++

dor_ian

New member
שאלה C++

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

עידו123456

New member
תלוי

תלוי באיזה תוכנה לזיהוי דליפות זכרון אתה משתמש. בעקרון בתוכנות הרציניות הייתי אומר לך לבדוק טוב טוב את הקוד שלך לפני שאתה יוצא בהאשמות, בתוכנות פחות רציניות יש בעיות כמו תאימות רק ל C (לא מזהות נכון קריאות של new ו delete) או סתם באגים בתוכנה. יש תוכנות מפוקפקות כמו LeakTracer שדווקא לא מזהות נכון קריאות של malloc מה שגורר זיהוי דליפת זכרון ברבות מפקודות STL.
 

אלדד28

New member
BC אכן מקצועית, אבל

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

יתרון ברור של PURIFY: מוצר שהוא גם ל-LINUX,HPUX,IRIX,SUNOS. ד"א זה גם יתרון ברור של RATIONAL באופן כללי - הרבה מאוד מהמוצרים שלהם הם MULTIPLATFORM. יש להם אפילו DEVENV שלם ל-UNIX. יתרון אפשרי של BC: תמיכה מסודרת יותר ב-.NET, אבל אני לא סגור על היכולות של PURIFY לגבי .NET מכיוון שאנחנו לא משתמשים ב-RUNTIME שלה. FEATURES משותפים שאני חושב עליהם (חוץ מהדברים הברורים): התממשקות עם IDE'S כמו VS.
 

אלדד28

New member
התכוונתי...

ל-FEATURE-ים שונים, ליכולות שונות. מה שאמרת הם דברים חשובים אם אתה פורטבילי, או אם אתה ב-NET., אבל אותי מסקרן לדעת אם יש פיצ'ר א' ש-BC עושה יותר טוב, או להיפך. אם אתה יודע, אני אשמח לשמוע.
 
לא יצא לי

לבדוק את אותה התוכנה גם עם RP וגם עם BC, אז קצת קשה לי להשוות תוצאות PROFILING ואחרות. יצא לי למצוא MEMORY LEAKS בעזרת RP, שלא מצאתי בעזרת BC, למרות שלא היה מדובר בגירסאות אחרונות של שני המוצרים.
 

אלדד28

New member
כשעבדתי עם Purify הייתה לי הרגשה,

שהיא יותר "מעמיקה" עם הבדיקות ועם התוצאות. מצד שני, היא גרמה לתוכנית לרוץ לאט יותר (DUH...) - הבעיה שלי היא שזו רק הרגשה. עוד לא מצאתי מישהו שבאמת יודע מה יותר טוב איפה
 

אלדד28

New member
ברור לי לגמרי שזה לא שחור ולבן,

ושאי אפשר לומר "BC רע, PURIFY טוב". אני הייתי רוצה לראות השוואה רצינית בין שתי התוכנות, כי סביר להניח שאחת מהן מציעה לי יותר נקודות חוזק בדברים שמטרידים אותי.
 
תשובה סופית בהחלט:

"אחת מהן מציעה לי יותר נקודות חוזק בדברים שמטרידים אותי" הדגש הוא על המילה "אותי". אז למה אנחנו בכלל מדיינים פה? מכיוון שלא ציינת מה בדיוק מטריד *אותך*, אז כנראה שפשוט תצטרך להתקין אותן ולבדוק.
 

אלדד28

New member
יופי, עכשיו אני בבעיה,

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