User Tools

Site Tools


cpp:object_lifecycle

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
cpp:object_lifecycle [2021/05/07 07:27] gthanoscpp:object_lifecycle [2021/05/07 07:32] – [Ένα ακόμη πιο σύνθετο παράδειγμα αρχικοποίησης δεικτών] gthanos
Line 134: Line 134:
 } }
 </code> </code>
- 
-Όταν δεν χρειαζόμαστε πλέον το αντικείμενο που δεσμεύτηκε δυναμικά στο //heap// θα πρέπει να το καταστρέψουμε ελευθερώνοντας τη δεσμευμένη μνήμη με τη βοήθεια του τελεστή //delete//. Κατά την  απελευθέρωση της μνήμης μέσω του τελεστή //delete// καλείται ο καταστροφέας της κλάσης, σε αναλογία με την κλήση του κατασκευαστή της κλάσης με χρήση του τελεστή //new//.   
  
 Ακολουθεί το σχηματικό διάγραμμα του //stack// και του //heap// της διεργασίας πριν, κατά τη διάρκεια και μετά την εκτέλεσης της συνάρτησης //foo//. Στο διάγραμμα δεν αποτυπώνεται η δέσμευση μνήμης για τα πεδία //width// και //height// του κάθε αντικειμένου τύπου //Rectangle//. Ακολουθεί το σχηματικό διάγραμμα του //stack// και του //heap// της διεργασίας πριν, κατά τη διάρκεια και μετά την εκτέλεσης της συνάρτησης //foo//. Στο διάγραμμα δεν αποτυπώνεται η δέσμευση μνήμης για τα πεδία //width// και //height// του κάθε αντικειμένου τύπου //Rectangle//.
  
 {{ :cpp:cppstackheap.png | Σχηματικό διάγραμμα του stack και του heap της διεργασίας πριν, κατά τη διάρκεια και μετά την εκτέλεσης της συνάρτησης foo}} {{ :cpp:cppstackheap.png | Σχηματικό διάγραμμα του stack και του heap της διεργασίας πριν, κατά τη διάρκεια και μετά την εκτέλεσης της συνάρτησης foo}}
 +
 +Όταν δεν χρειαζόμαστε πλέον το αντικείμενο που δεσμεύτηκε δυναμικά στο //heap// θα πρέπει να το καταστρέψουμε ελευθερώνοντας τη δεσμευμένη μνήμη με τη βοήθεια του τελεστή //delete//. Κατά την  απελευθέρωση της μνήμης μέσω του τελεστή //delete// καλείται ο καταστροφέας της κλάσης, σε αναλογία με την κλήση του κατασκευαστή της κλάσης με χρήση του τελεστή //new//
  
 ===== Ένα πιο σύνθετο παράδειγμα αρχικοποίησης δεικτών ===== ===== Ένα πιο σύνθετο παράδειγμα αρχικοποίησης δεικτών =====
Line 247: Line 247:
   cout << "---------------" << endl;   cout << "---------------" << endl;
      
-  delete[] r4[0]; +  delete[] r4[0];  // Call the destructor of Rectangle for all elements in row 0. 
-  delete[] r4[1];+  delete[] r4[1];  // Call the destructor of Rectangle for all elements in row 1.
   delete[] r4;   delete[] r4;
 }  }
cpp/object_lifecycle.txt · Last modified: 2021/05/07 06:35 (external edit)