Was ist der Zweck der Zuweisung einer bestimmten Speichermenge für Arrays in C ++?
Ich bin ein Student, der in diesem Semester eine Klasse über Datenstrukturen in C ++ besucht, und bin auf etwas gestoßen, das ich heute Abend nicht ganz verstehe. Angenommen, ich würde einen Zeiger auf ein Array auf dem Heap erstellen:
int* arrayPtr = new int [4];
Ich kann mit der Zeigersyntax auf dieses Array zugreifen
int value = *(arrayPtr + index);
Aber wenn ich der Speicherposition unmittelbar nach dem Ende des für das Array zugewiesenen Speicherplatzes einen weiteren Wert hinzufügen würde, könnte ich dann darauf zugreifen
*(arrayPtr + 4) = 0;
int nextPos = *(arrayPtr + 4);
//the value of nextPos will be 0, or whatever value I previously filled that space with
Die Position im Speicher von * (arrayPtr + 4) ist nach dem Ende des für das Array zugewiesenen Speicherplatzes. Aber soweit ich das verstehe, würde das oben genannte immer noch keine Probleme verursachen. Warum also, abgesehen davon, dass es eine Anforderung von C ++ ist, Arrays eine bestimmte Größe geben, wenn sie deklariert werden?