was braucht mehr speicher ?
-
hallo,
ich habe meine daten bisher in einem dynamischen arrtay gespeichert.
da sich die daten aber recht oft ändern, dass heisst, die arraygrösse variiert, hab ich mir überlegt, die daten mitteln einer veketteten liste zu speichern.nun frage ich mich, ob ich das tatsächlich tun sollte, da die daten in zwei dynamischen arrays sind, und die eine mittels index auf die andere zeigt.
der index wert ist im moment eine "long" zahl.
in einer verketteten liste müsste ich aber einen zeiger auf eine speicherstelle in der zweiten liste speichern.
ist ein solcher zeiger grösser als der speicherplatz, den eine long variable benötigt ? bzw. ist der speicherverbrauch für den zeiger auch abhängig davon, auf welche art variable er zeigt (array, struct etc.) ?
wäre nett, wenn ich mir kurz helfen könntet
-
Wie gross der Speicherbedarf für einen Datentyp (int, long, pointer) ist, ist nicht durch den Standard festgeschrieben d.h. das liegt am Compiler.
Gängig ist, das ein long und ein Zeiger jeweils 4 Bytes groß ist. Damit wäre auch die zweite Frage indirekt beantwortet: Es macht speichertechnisch keinen Unterschied auf was ein Zeiger zeigt.
-
jut danke, dann stricke ich den ganzen kram mal so nach und nach auf eine verkettete liste um, da ich durch sowas ja keinen speicherplatz verliere
-
Vergiss bitte den Overhead einer verketteten liste nicht. Ein std::vector hat einen Overhead von O(1) während eine std::list einen Overhead von O(n) hat.
Bei std::list hast du pro Element meistens zwei Zeiger Overhead.
Die Größen deiner Datentypen kannst du mit dem sizeof Operator herausfinden.
-
ähh,
ich verwalte meine listen in der regel selbst. d.h. ich benutze std::
-
frager schrieb:
ähh,
ich verwalte meine listen in der regel selbst. d.h. ich benutze std::
Für mich hört sich das nach einem Widerspruch an.
-
sorry, warn freudscher fehler....
hatte in geistiger umnachtung an vector und son kram gedacht