Grösse eines array im heap ermitteln?
-
hi,
ich versuche gerade ein herauszubekommen wie ich die grösse eines folgendermassen definierten arrays herausbekomme(zwecks blockweisem ablegen in einer datei):
short * bsp = new short[29];geht das, und wenn ja wie.
danke schonmal
der Gilb
-
Dir irgendwo die 29 merken
-
echt?
misttrotzdem danke
-
unter C++ verwendet man normalerweise std::vector. Diese Klasse merkt sich intern die Größe.
#include <vector> #include <iostream> std::vector<short> bsp(29); std::cout << bsp.size() << std::endl;
-
cplusplus.. schrieb:
unter C++ verwendet man normalerweise std::vector. Diese Klasse merkt sich intern die Größe.
#include <vector> #include <iostream> std::vector<short> bsp(29); std::cout << bsp.size() << std::endl;
soweit ich weiß gibt vektor.size() die anzahl der elemente im vektor wieder, nicht aber deren größe
-
ok, vielleicht sucht er auch .capacity()
-
Nö, siez() ist schon korrekt.
-
enno-tyrant schrieb:
cplusplus.. schrieb:
unter C++ verwendet man normalerweise std::vector. Diese Klasse merkt sich intern die Größe.
#include <vector> #include <iostream> std::vector<short> bsp(29); std::cout << bsp.size() << std::endl;
soweit ich weiß gibt vektor.size() die anzahl der elemente im vektor wieder, nicht aber deren größe
Falls du damit auf die Groesse des belegten Speichers in Bytes abzielst, die
erhaelst du auch nicht, wenn du einfach die 29 wegspeicherst. Da musst du dann
schon mit sizeof(type)*x arbeiten.mfg
v R
-
nochmal danke
hatte das jetzt schon so:
schon mit sizeof(type)*x arbeiten
gemacht.mein "lehrbuch" ist noch nicht bei der vektor klasse angekommen-ich glaube da werde ich wohl ein bissl vorblättern
der Gilb
-
Artchi schrieb:
Nö, siez() ist schon korrekt.
warum glaube ich dir das wohl nicht?
#include <iostream> #include <vector> int main() { std::vector<int> vec; for (unsigned int i=0;i<100;++i) vec.push_back(i); std::cout << vec.size() << std::endl; std::cout << vec.capacity() << std::endl; }
-
capacity gibt nur an für wieviel Elemente bereits Platz allokiert wurde.
bei dem beispiel von enno-tyrant müsste der erste wert auf jeden Fall 100 sein, der 2. lässt sich nicht so ohne weiteres vorhersagen, ich tippe mal auf 128 wäre ne sinnvolle größe.
der speicher den std::vector<int> nun belegt ist dann:
sizeof(int) * vec.capacity()
-
damit wäre die sache dann ja geklärt