User Tools

Site Tools


cpp:dynamic_memory

Differences

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

Link to this comparison view

Next revision
Previous revision
cpp:dynamic_memory [2017/04/11 10:00]
gthanos created
cpp:dynamic_memory [2021/04/27 05:01]
Line 1: Line 1:
-====== Δυναμική διαχείριση μνήμης ====== 
- 
-Όπως και στη C έτσι και στη C++ η μνήμη μπορεί να δεσμευθεί δυναμικά στο χώρο δεδομένων που ονομάζεται //heap//. Εκτός των συναρτήσεων [[http://www.cplusplus.com/reference/cstdlib/malloc/|malloc]] και [[http://www.cplusplus.com/reference/cstdlib/free/|free]] που εξακολουθούν να υφίστανται και στη C++, ορίζονται οι τελεστές **new** και **delete** για δέσμευση και αποδέσμευση μνήμης.  
- 
-<WRAP center round tip 80%> 
-Δεν θα πρέπει να συγχέεται ποτέ η χρήση **malloc/free** με **new/delete** για τη δέσμευση και αποδέσμευση μνήμης. Οποιοσδήποτε χώρος δεν δεσμεύτηκε με //malloc// θα πρέπει να ελευθερωθεί με //free//. Αντίστοιχα ότι δεσμεύθηκε με //new// θα πρέπει να ελευθερωθεί με //delete//. 
- 
-Οι τελεστής **new** εκτός από τη δέσμευση μνήμης επιτρέπει και τη αρχικοποίηση μεταβλητών βασικού ή αναφορικού τύπου με χρήση του αντίστοιχου κατασκευαστή. 
-</WRAP> 
- 
-Ο τελεστής **new** έχει δύο μορφές (**new** και **new[]**). Η πρώτη χρησιμοποιείται για την δέσμευση μνήμης ενός αντικειμένου ή μιας μεταβλητής βασικού τόπου, ενώ η δεύτερη για την δέσμευση μνήμης και την αρχικοποίηση ενός πίνακα. Δείτε το παρακάτω παράδειγμα χρήσης του τελεστή **new**. 
- 
-<code dynamicMemory c++> 
-#include <iostream> 
-using namespace std; 
- 
-int main () { 
-  int *num, *p; 
-  num = new int; 
-  cout << "Enter number of elements: "; 
-  cin >> *num; 
-  p = new int[*num]; 
-  for(int i=0; i<*num; i++) { 
-    cout << "Next integer: "; 
-    cin >> p[i]; 
-  } 
-  for(int i=0; i<*num; i++) { 
-    cout << p[i] << "\t"; 
-  } 
-  cout << endl; 
-  delete []p; 
-  delete num; 
-} 
-</code> 
- 
-Για βασικούς τύπους δεδομένων επίσης μπορείτε κατά την χρήση του τελεστή **new** να αρχικοποιήσετε τη μεταβλητή ως εξής: 
- 
-<code dynamicMemory c++> 
-#include <iostream> 
-using namespace std; 
- 
-int main () { 
-  int *num; 
-  num = new int(5); 
-  cout << "num: " << num; 
-} 
-</code> 
- 
- 
- 
  
cpp/dynamic_memory.txt · Last modified: 2021/04/27 05:01 (external edit)