Seite 1 von 1

[gelöst] Integer auf dem Heap

Verfasst: 17. April 2006 18:23
von BartSimpson
Hallo hat jemand eine Idee, wie ich auf einem Integer auf dem Heap zugreifen kann??
Hier der Code:

Code: Alles auswählen

int *Liste;
Liste=new int;
HeapCacheInteger->insert(QUuid::createUuid(),Liste);
for(Liste=0;Liste<55;Liste++)
{
  blabla[Liste]=GGGGG;
}
Nur wie muss ich den Variable Liste in der For Schleife ändern??
Falls jetzte die Frage kommen sollte, warum es unbedingt auf dem Heap sein soll: Es handelt sich um eine Funktion die extrem häuft per rekusion aufgerufen wird, wo leider manchmal der Stack zu klein ist:(
Also habe ich mir gedacht, ab auf den Heap damit und um da wieder aufzuräumen das ganze in ein QCache.

Verfasst: 17. April 2006 19:08
von upsala
Wenn ich das richtig sehe, willst du eine Liste mit 56 Integerwerten auf dem Heap ablegen. Warum dann nicht einfach ein QList<int>? Die Verwaltungsdaten der QList landen auf dem Stack (auf meiner Maschine hier sind das gerade mal 4 Byte!) die eigentlichen Daten auf dem Heap. Und das Risiko eines Bufferoverflows ist auch viel geringer (oder siehe aktuelle c't: Heap-Overflows S. 186)

Verfasst: 17. April 2006 19:25
von BartSimpson
nee das mit der 54 ist nur ein Beispiel. Bei jeder rekusion können es über
20.000 Werte sein. Und ebensolviele rekusionen. Die anderen Objekte liegen ja schon auf dem Heap per QCache. Nur die Sache mit dem Integer ist etwas verzwickt:( Das Raufpacken ist ja nicht das Problem. Nur wie soll man da den Wert setzen:(

Verfasst: 17. April 2006 19:39
von BartSimpson
So jetzt geht's mit.

Code: Alles auswählen

int *Liste=new int;
HeapCacheInteger->insert(QUuid::createUuid(),Liste);
for(*Liste=0;*Liste<XX;*Liste=*Liste+1)
{
.
.
.
}
Das in der C't habe ich auch gelesen.
Und wer auf gut Glück memcpy nutzt naja :shock:
Aber hat jemand eine Idee, wie man rausfinden kann, ob am Schluss wirklich alles wieder sauber vom Stack und Heap geräumt wird??

Verfasst: 18. April 2006 09:45
von Goos
BartSimpson hat geschrieben: Aber hat jemand eine Idee, wie man rausfinden kann, ob am Schluss wirklich alles wieder sauber vom Stack und Heap geräumt wird??
Es gibt (meistens recht teure) Tools, die sowas ueberpruefen.
Ansonsten musst halt einfach darauf achten, deine delete Aufrufe nicht zu vergessen :)

Goos

Verfasst: 18. April 2006 09:55
von BartSimpson
Aber da gibt es doch garaniert was aus der OpenSource Welt oder?

Verfasst: 18. April 2006 10:00
von Goos
Oh, da bin ich leider nicht weiter informiert. Geben tuts ueberall irgendwas, obs gut funktioniert ist ne andere Frage.
Falls du noch was entsprechendes findest, dann kann mans ja bei den Tipps mal reinschreiben.

Goos