Arraygrösse ermitteln
-
Hallo zusammen..
Ist es möglich irgendwie die Grösse eines Arrays zu ermitteln? Ich würde gern herausfinden, wieviele Elemente in einem Array sind.
int* pArr; int size; pArr = new int[100];Also in diesem Fall sind es 100 Elemente. Wenn ich das aber nicht vorher weiss, kann ich es irgendwie herausfinden?
-
Sollte natürlich so aussehen:
int* pArr; int size = 100; pArr = new int[size];
-
Nope ... musst dir die Größe merken ...
-
ne die Klasse vector nehmen, die merkt sich immer alles, und kann im notfall auch die größe erweitern.
-
Geht schon ;).
int main(int argc, char **argv) { typedef long int DataType; const int ARRAY_SIZE = 20; DataType* array = new DataType[ARRAY_SIZE]; std::cout << *(((int*)array) - 1) / sizeof(DataType) << std::endl; delete array; }Das ist natürlich Schwachsinn und niemand macht sowas (is nur der vollständigkeit halber).
Es kann natürlich sein, dass das Betriebssystem mehr Speicher reserviert als du eigendlich wolltest.
Also bei mir funzts jedenfalls - gcc 4.1/linux/32bitWer weiß ob Das mit nem anderen compiler/Betriebssysten immer noch funzt

MfG
Plassy
-
Hmm nein das sollte laut Standard nur für Stack-Objekte so sein.(Meine mich daran zu erinnern)
-
@Plassy: Ich würde sagen das ist implemtierungsabhängig und damit sehr böse.
-
Und niemand beschwert sich über new[]; und delete;?

-
The-Kenny schrieb:
Und niemand beschwert sich über new[]; und delete;?

wozu auch, ist doch vorher schon undefiniert

-
arrays sind nur dann zu gebrauchen, wenn man zur compilezeit ihre größe kennt. ist das nicht der fall, sollte man nen container wie vector verwenden. bloß keine panik vor den dingern ^^
-
Und wem std::vector zu viel kann (solche Leute soll es ja geben), kann ja std::tr1::array nehmen.