Speichergröße hinter Pointern
-
Wie kann ich die Größe des Speichers abfragen, die sich hinter einem Pointer befindet.
Hier ist mal ein Beispiel, wo ich einen Pointer auf ein int-Feld zurück bekomme. Bisher habe ich es so gemacht, das ich mit im 0.Element die Größe mit zurückgeben lasse.int* mach(int i) { int *t=new int[i+1]; t[0]=i; for(int j=1;j<i+1;j++) t[j]=j; return t; } int main(int argc, char* argv[]) { int *t=mach(5); return 0; }
-
Wenn du 'mach' aufrufst, übergibst du doch die größe,
also solltest du sie wissenAnsonsten:
sizeof(type_pointer)/sizeof(type);
also bei dir
sizeof(t)/sizeof(int);Devil
-
Ne, so schlau war ich auch schon.
sizeof(t) lifert 4Byte, größe des Pointers, nicht des Feldes.
-
Warum verwendest du nicht std::vector ?
Bietet auch alles was ein array hat. (und ein bisschen mehr...)
Devil
-
devil81 schrieb:
... (und ein bisschen mehr...
)Devil
Und diese bisschen mehr möchte ich nicht unbedingt haben.
Da muß es doch eine Möglichkeit geben, um an die Speichergröße zu kommen.
(Bei M$ gibt es ein _msize)
-
nein, du kannst nicht an die Speichergroesse kommen.
Schreib dir doch einfach eine Klasse dynArray - welche diese Aufagebn verwaltet.
-
Ok, dann mache ich es wie bisher.
DANKE
-
Alternativ könntest du auch einen zweiten Parameter einführen (&int), in denm du die Größe übermittelst.