ABA


"שאלה ב++C, מי שיודע\מכיר"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #21630 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 21630
spidey1  
חבר מתאריך 1.7.02
25536 הודעות
   15:44   28.03.16   
אל הפורום  
  שאלה ב++C, מי שיודע\מכיר  
 
   זאת השאלה:

try{
char * pc = new char;
...
delete pc;
}
catch(...)
{...}

השאלה היא:
האם יש בעיה כלשהי עם הקוד הנ"ל
במידה וכן, מה יש לתקן?
ניתן להשתמש בauto_ptr


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

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

הבעיה היא, שauto_ptr משתמש בdelete ולא בdelete
לכן צריך לדאוג גם לתקן את זה במחלקה של הauto_ptr


למישהו יש רעיון אחר?


Tears Will Get You Sympathy,
Sweat Will Get You Results!


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  לדעתי השתמשת בסוגריים מרובעים ולכן אי אפשר להבין יותר מידי כי זה נמחק asco88  29.03.16 17:21 1
  מכתב cfirzzz 29.03.16 23:54 2
  הבעייה האמיתית היא שמלמדים אתכם להשתמש ב auto_ptr כשזה בוטל מהשפה Net_Boy  30.03.16 02:27 3

       
asco88 
חבר מתאריך 17.6.04
26757 הודעות
   17:21   29.03.16   
אל הפורום  
  1. לדעתי השתמשת בסוגריים מרובעים ולכן אי אפשר להבין יותר מידי כי זה נמחק  
בתגובה להודעה מספר 0
 


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
cfirzzz לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.8.02
5060 הודעות, 2 פידבק
   23:54   29.03.16   
אל הפורום  
  2. מכתב  
בתגובה להודעה מספר 0
 
   לא ממש הצלחתי להבין מה אתה שואל
אם יזרק exception אחרי שורת ההקצאה, לא תשחרר את הזכרון, זו הבעיה היחידה שאני רואה כאן...

- לא ברור לי למה כתבת שתקצה 10 בתים, הרי תקצה כאן רק 1
- לא הבנתי מה כתבת לגבי ה deleter של ה auto ptr

נשלח ע"י הסלולרי


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Net_Boy  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.4.02
17151 הודעות, 1 פידבק
   02:27   30.03.16   
אל הפורום  
  3. הבעייה האמיתית היא שמלמדים אתכם להשתמש ב auto_ptr כשזה בוטל מהשפה  
בתגובה להודעה מספר 0
 
   מתכנתי C++ שנאו את זה וכל השנים השתמשו ב boost smart pointers.
http://stackoverflow.com/questions/3697686/why-is-auto-ptr-being-deprecated

בC++ 11 הפוינטרים של בוסט הם חלק מהתקן. (shared_ptr, unique_ptr וכו'...)


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net