נשלח בתאריך: 23 August 2007 בשעה 23:20 | | IP רשוּם
|
|
|
|
לא פלא שהקומפיילר בעט אותך לכל הרוחות.
אתה מנסה לשחרר משהו שהוקצא ב-STACK של התוכנית. זה לא אפשרי. ניתן לשחרר רק משתנים שהוקצו דינאמית ע"י האופרטור NEW. בתוכנית שלך אתה הצהרת באופן סטאטי על משתנה מסוג מערך של פויינטרים לתורים בגודל order. משתנה זה נמצא ב-STACK של התוכנית ולא ב-HEAP אי אפשר לשחרר אותו כי הוא לא הוקצה באופן דינאמי. מאידך ניתן לשחרר את התורים שהקצאת בלולאה ע"י האופרטור DELETE ללא סוגריים מרובעים.
לדוגמה:
קוד:
int a[10]; delete []a;// error int* a = new int[10]; delete []a;// ok. |
|
|
בקיצור אם אתה רוצה לשחרר את התורים שהקצאת אתה צריך לחזור על הלולאה:
קוד:
for (int i = 0; i < order; i++) delete q[i]; |
|
|
זהו...
|