Größe eines Feldes
-
Hallo,
ich habe mal ne Frage. Ich habe einen Zeiger auf ein Integer-Array. Das Interfeld fülle ich mit Primzahlen (duch Anfangswert und Endwert). Nun will ich rausbekommen, wieviele Primzahlen in dem Feld enthalten sind.
Kann mir da jemand helfen???Vielen Dank!!!
-
Nur Du Dir selbst - will sagen: mitzählen.
Oder Du verwendest z.B. einen std::vector<int>, dann kannst Du mit std::vector<int>::size() die Anzahl abfragen.
-
Die Frage ist nur, woher kriegt C++ dann bei delete[leer] diese Information, wenn sie nirgends gespeichert ist?
Wird die nur während der Compiliervorgangs verfolgt, dann würde sowas aber Probleme machen, oder?int *pTest = new int[10]; --pTest; ++pTest; delete[] pTest; // Geht das nach?
ChrisM
-
das ist Compilermagie
-
ist die frage, warum der compiler diese magie nicht fuer nuetzliche sachen einsetzt. bei pascal musste man bei dispose die groesse immer mit angeben.
edit:
vielleicht weil man wenn man den char* von einem mit einem anderen compiler compilierten programm bekommt. dann wuerde weder das groesse rausfinden noch das delete funktionieren.[ Dieser Beitrag wurde am 09.07.2003 um 16:02 Uhr von PeterTheMaster editiert. ]
-
aber wenn, dann würd ich das löschen auch wieder dem von einem anderen compiler generierten programm überlassen...
-
@ChrisM: gute Frage. Genau genommen ist diese Information natürlich gespeichert, aber "unsichtbar". Häufig liegt das z.B. an der Stelle pTest[-1], der Compiler liefert dann eine Adresse "höher" zurück. Nur darf man sich auf das[-1] nicht verlassen, das ist extrem compiler- und versionsabhängig und kann irgendwie vom Compilerbauer realisiert werden.
-
wenn du zugriff auf den Quellcode eines Compilers hast, kannst du dir diese
Informationen ja beziehen und dann brauchste nie wieder zu zaehlenmfg
v R