This shows you the differences between two versions of the page.
| Next revision | Previous revision Next revision Both sides next revision | ||
|
cpp:dynamic_memory [2017/04/11 10:00] gthanos created |
cpp:dynamic_memory [2017/04/11 10:20] gthanos [Έλεγχος δέσμευσης μνήμης] |
||
|---|---|---|---|
| Line 9: | Line 9: | ||
| </ | </ | ||
| - | Ο τελεστής **new** έχει δύο μορφές (**new** και **new[]**). Η πρώτη χρησιμοποιείται για την δέσμευση μνήμης ενός αντικειμένου ή μιας μεταβλητής βασικού τόπου, ενώ η δεύτερη για την δέσμευση μνήμης και την αρχικοποίηση ενός πίνακα. Δείτε το παρακάτω παράδειγμα χρήσης του τελεστή **new**. | + | Ο τελεστής **new** έχει δύο μορφές (**new** και **new[]**). Η πρώτη χρησιμοποιείται για την δέσμευση μνήμης ενός αντικειμένου ή μιας μεταβλητής βασικού τόπου, ενώ η δεύτερη για την δέσμευση μνήμης και την αρχικοποίηση ενός πίνακα. |
| - | < | + | Σε αναλογία με τον τελεστή **new** ο τελεστής **delete** για την αποδέσμευση μνήμης έχει και αυτός δύο μορφές (**delete** και **delete[]**). Η πρώτη χρησιμοποιείται για την αποδέσμευση μνήμης ενός αντικειμένου ή μιας μεταβλητής βασικού τόπου, ενώ η δεύτερη για την αποδέσμευση μνήμης ενός πίνακα. Δείτε το παρακάτω παράδειγμα χρήσης των τελεστών **new** και **delete**. |
| + | |||
| + | <code c++ dynamicMemory.cpp> | ||
| #include < | #include < | ||
| using namespace std; | using namespace std; | ||
| Line 36: | Line 38: | ||
| Για βασικούς τύπους δεδομένων επίσης μπορείτε κατά την χρήση του τελεστή **new** να αρχικοποιήσετε τη μεταβλητή ως εξής: | Για βασικούς τύπους δεδομένων επίσης μπορείτε κατά την χρήση του τελεστή **new** να αρχικοποιήσετε τη μεταβλητή ως εξής: | ||
| - | < | + | <code c++ dynamicMemory.cpp> |
| #include < | #include < | ||
| using namespace std; | using namespace std; | ||
| Line 47: | Line 49: | ||
| </ | </ | ||
| + | ===== Έλεγχος δέσμευσης μνήμης ===== | ||
| + | |||
| + | Κατά τη δέσμευση μνήμης δεν είναι απαραίτητο να γίνονται οι έλεγχοι για το κατά πόσο η δέσμευση απέτυχε. Στην περίπτωση που η δέσμευση μνήμης αποτύχει τότε παράγεται ένα // | ||
| + | |||
| + | <code c++ dynamicMemory.cpp> | ||
| + | #include < | ||
| + | using namespace std; | ||
| + | |||
| + | int main () { | ||
| + | int *num, *p; | ||
| + | num = new int; | ||
| + | cout << "Enter number of elements: "; | ||
| + | cin >> *num; | ||
| + | p = new (nothrow) int[*num]; | ||
| + | if(p==NULL) { | ||
| + | cout << " | ||
| + | return 0; | ||
| + | } | ||
| + | for(int i=0; i<*num; i++) { | ||
| + | cout << "Next integer: "; | ||
| + | cin >> p[i]; | ||
| + | } | ||
| + | for(int i=0; i<*num; i++) { | ||
| + | cout << p[i] << " | ||
| + | } | ||
| + | cout << endl; | ||
| + | delete []p; | ||
| + | delete num; | ||
| + | } | ||
| + | </ | ||