[ dr.lijenjin @ 19.10.2007. 14:43 ] @
Drugi primjer s ovog linka: http://www.fredosaurus.com/notes-cpp/newdelete/55dynexample.html Code: int max = 10; // no longer const int* a = new int[max]; // allocated on heap int n = 0; //--- Read into the array while (cin >> a[n]) { n++; if (n >= max) { max = max * 2; // double the previous size int* temp = new int[max]; // create new bigger array. for (int i=0; i<n; i++) { temp[i] = a[i]; // copy values to new array. } delete [] a; // free old array memory. a = temp; // now a points to new array. } } //--- Write out the array etc. Pitanje - Zašto ovo kompajla bez warninga ili errora? Isto tako, manja modifikacija tog koda: Code: int max = 10; int* a = new int[max]; int n = 0; while (cin >> a[n]) { n++; } Ovo radi i nakon što je n = 9. On dakle ide van deklariranog polja i bez problema piše u memoriju koja nije njegova? Jel mi može neko pojasnit malo kako i zašto ovo funkcionira? Neće li biti opasnosti od koruptiranja podataka koje ovako zapišemo u nealociranu memoriju, nakon što je n = 9? |