Warum delete []p funktioniert nicht?
-
Hallo an alle,
ich habe hier ein Problem:int* p=new int[];
p[0]=2;
p[1]=3;
delete []p; // ohne delete funktioniert!
// Ich möchte aber delete benutzen. Wie kann man das machen?
-
Du musst bei new natuerlich die Groesse des Arrays angeben, das du erstellen moechtest.
-
Kann ich nicht leeres array deklarieren? Ich weiß nicht, wie groß mein array während das Programmverlauf wird?
-
goldslawik schrieb:
Kann ich nicht leeres array deklarieren?
Kannst du. Aber das ist dann leer. Du kannst nichts reinschreiben.
Ich weiß nicht, wie groß mein array während das Programmverlauf wird?
Nimm std::vector<int>.
-
goldslawik schrieb:
Kann ich nicht leeres array deklarieren? Ich weiß nicht, wie groß mein array während das Programmverlauf wird?
Nein, kannst du nicht - spätestens an der Stelle, wo du das Array erzeugen willst, benötigst du die Größe:
int size,*data; cout<<"Wie groß soll das Array werden? "; cin>>size; data=new int[size]; ... delete[]data;(alternativ kannst du auch STL-Container (vector, deque,...) verwenden, die sind sowieso sicherer als blanke Pointer-Arithmetik)
-
Vielen Dank