cpp:dynamic_memory

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
cpp:dynamic_memory [2017/04/11 10:17]
gthanos [Έλεγχος δέσμευσης μνήμης]
cpp:dynamic_memory [2017/04/11 10:20]
gthanos [Έλεγχος δέσμευσης μνήμης]
Line 9: Line 9:
 </WRAP> </WRAP>
  
-Ο τελεστής **new** έχει δύο μορφές (**new** και **new[]**). Η πρώτη χρησιμοποιείται για την δέσμευση μνήμης ενός αντικειμένου ή μιας μεταβλητής βασικού τόπου, ενώ η δεύτερη για την δέσμευση μνήμης και την αρχικοποίηση ενός πίνακα. Δείτε το παρακάτω παράδειγμα χρήσης του τελεστή **new**.+Ο τελεστής **new** έχει δύο μορφές (**new** και **new[]**). Η πρώτη χρησιμοποιείται για την δέσμευση μνήμης ενός αντικειμένου ή μιας μεταβλητής βασικού τόπου, ενώ η δεύτερη για την δέσμευση μνήμης και την αρχικοποίηση ενός πίνακα.  
 + 
 +Σε αναλογία με τον τελεστή **new** ο τελεστής **delete** για την αποδέσμευση μνήμης έχει και αυτός δύο μορφές (**delete** και **delete[]**). Η πρώτη χρησιμοποιείται για την αποδέσμευση μνήμης ενός αντικειμένου ή μιας μεταβλητής βασικού τόπου, ενώ η δεύτερη για την αποδέσμευση μνήμης ενός πίνακα. Δείτε το παρακάτω παράδειγμα χρήσης των τελεστών **new** και **delete**.
  
 <code c++ dynamicMemory.cpp> <code c++ dynamicMemory.cpp>
Line 49: Line 51:
 ===== Έλεγχος δέσμευσης μνήμης ===== ===== Έλεγχος δέσμευσης μνήμης =====
  
-Κατά τη δέσμευση μνήμης δεν είναι απαραίτητο να γίνονται οι έλεγχοι για το κατά πόσο η δέσμευση απέτυχε. Στην περίπτωση που η δέσμευση μνήμης αποτύχει τότε παράγεται ένα //exception// τύπου ''bad_alloc'' το οποίο καλούμαστε να διαχειριστούμε διαφορετικά το πρόγραμμα θα τερματίσει. Εάν δεν επιθυμούμε ο τελεστής **new** να πετάξει exception θα πρέπει να αλλάξουμε τον τρόπο κλήσης (προσθέτουμε τη δεσμευμένη λέξη ''(nothrow)'' αμέσως μετά τον τελεστή **new**και να ελέγξουμε την επιστρεφόμενη τιμή ως εξής:+Κατά τη δέσμευση μνήμης δεν είναι απαραίτητο να γίνονται οι έλεγχοι για το κατά πόσο η δέσμευση απέτυχε. Στην περίπτωση που η δέσμευση μνήμης αποτύχει τότε παράγεται ένα //exception// τύπου ''bad_alloc'' το οποίο καλούμαστε να διαχειριστούμεδιαφορετικά το πρόγραμμα θα τερματίσει. Εάν δεν επιθυμούμε ο τελεστής **new** να πετάξει //exception// θα πρέπει να αλλάξουμε τον τρόπο κλήσης προσθέτοντας τη δεσμευμένη έκφραση ''(nothrow)'' αμέσως μετά τον τελεστή **new** και να ελέγξουμε την επιστρεφόμενη τιμή ως εξής:
  
 <code c++ dynamicMemory.cpp> <code c++ dynamicMemory.cpp>
Line 78: Line 80:
 </code> </code>
  
-===== Αποδέσμευση μνήμης ===== 
  
-Σε αναλογία με τον τελεστή **new** ο τελεστής **delete** έχει και αυτός δύο μορφές 
  
cpp/dynamic_memory.txt · Last modified: 2021/04/27 05:01 (external edit)