Größe eines Arrays mit new float()

DonDozone

Grünschnabel
Hallo zusammen,

ich suche eine Möglichkeit, die Größe eines Arrays zu ermitteln, welches ich zuvor mit
Code:
float *array = new float(variable);
angelegt habe. Das übliche
Code:
int size = sizeof(array)/sizeof(array[0]);
liefert hier leider nur die Größe 1 zurück. Wenn ich das Array anlege mit
Code:
float array[3] = {...};
klappt das Ganze.

Ich muss das Array dynamisch zur Laufzeit anlegen, deshalb brauche ich den "new"-Operator. Da ich dieses Array an eine andere Komponente in meinem Programm versende kann ich leider die Größe des Arrays nicht mitliefern, sondern muss es irgendwie nach dem Versenden herausfinden.

Hier nochmal Code zum selbst testen:
Code:
int variable = 3;
float* array = new float(variable);
for(int i = 0; i < variable; i++){
   array[i] = 1.0f;
}
int size = sizeof(array) / sizeof(array[0]);
printf("Size: %i", size);

Ich hoffe, ihr könnt mir weiterhelfen.
 
Hi.
ich suche eine Möglichkeit, die Größe eines Arrays zu ermitteln, welches ich zuvor mit
Code:
float *array = new float(variable);
angelegt habe.
Du hast damit kein Array angelegt, sondern dynamisch eine float Variable mit dem Wert von variable initialisiert.
C++:
float *array = new float[variable];
Das übliche
Code:
int size = sizeof(array)/sizeof(array[0]);
liefert hier leider nur die Größe 1 zurück. Wenn ich das Array anlege mit
Code:
float array[3] = {...};
klappt das Ganze.
In C++ bestimmt sizeof ausschließlich zur Compilierzeit die Größe von Typen und Variablen. Das kann also nicht zur Laufzeit funktionieren.
Ich muss das Array dynamisch zur Laufzeit anlegen, deshalb brauche ich den "new"-Operator. Da ich dieses Array an eine andere Komponente in meinem Programm versende kann ich leider die Größe des Arrays nicht mitliefern, sondern muss es irgendwie nach dem Versenden herausfinden.
Das ist nicht möglich.

Gruß
 
Zuletzt bearbeitet:
Hm, okay. Ich kann mit
Code:
array[0], array[1]
usw auf die Werte zugreifen, deswegen dachte ich, es funktioniert ;)

Aber danke schonmal. Hast du irgendeine Idee, wie ich es machen kann, dass ich aus einem übergebenen float-Pointer die Anzahl der dahinterliegenden Werte herausbekomme?
 
Aber danke schonmal. Hast du irgendeine Idee, wie ich es machen kann, dass ich aus einem übergebenen float-Pointer die Anzahl der dahinterliegenden Werte herausbekomme?
Du könntest als ersten Wert des Arrays die Größe übergeben.

Aber eigentlich sollte man die Schnittstelle ändern - je früher desto besser - und noch einen zusätzllichen Parameter an die Funktion übergeben.

Gruß
 
Zurück