Zahl der Elemente eines Arrays bestimmen
-
Ich wollte ja eigentlich keinen Vektor verwenden. Aber ihr habt mich überzeugt, ich werde mein Programm etwas anders aufbauen und Vektoren verwenden.
Ich war mir im übrigen auch nicht im klaren, dass es ein Speicherleck ist. Danke für den Hinweis.
-
m.g. schrieb:
Ich wollte ja eigentlich keinen Vektor verwenden.
Hattest du einen bestimmten Grund? Bei mir ist es genau umgekehrt: Es braucht eine besondere Rechtfertigung, damit ich mit rohen Arrays oder besitzenden Zeigern hantiere und auf moderne Mittel wie
std::vector
verzichte.
-
Weil das ganze Teil einer DLL wird und unter anderem von einem Programm in Smalltalk angesprochen wird. Und das klappt wohl nur, bzw. am einfachsten, mit Pointern auf Char Arrys.
-
vector<T> für T!=bool garantiert ein lineares Speicherlayout
vector<int> foo (99); int* ptr = &foo[0]; ptr[3] = 23; cout << foo[3] << '\n';
-
Hi,.
Du musst dir die allocierte größe in bytes durch typengröße speichern. Dann hast Du auch die anzahl der Elemente.
grüüße
-
zeusosc schrieb:
Du musst dir die allocierte größe in bytes durch typengröße speichern. Dann hast Du auch die anzahl der Elemente.
Du meinst wohl divideren?
-
Jo,..
deswegen auch das wort "durch"...
-
Und wie soll das bitte mit Pointern funktionieren?
-
#define MAX_SIZE 1024 size_t index=0; size_t size_in_bytes = MAX_SIZE*sizeof(double); double* ptr=(double*)malloc(size_in_bytes); //der compiler convertiert automatisch den index als vielfaches der typengröße index=511; double Wert_An_stelle_512 = *(ptr+index);
gruß
-
zeusosc, ich denke eher, m.g. meinte, wie du bei einem Zeiger auf ein dynamisches Array die Anzahl Elemente bestimmen kannst. Dafür gibt es nämlich keine portable Möglichkeit.
-
Hi,.
ja ist richtig,.. ich dachte es bezog sich auf die äußerung die größe einfach zu sichern,..
grüße