pointer auf pointerarray im heap?
-
Hi,
`hab schon googel und so nichts gefunden.
wie kann ich einen zeiger auf einen array voller heapzeiger machen?
Zeiger auf dem Stack sind ja int *p[4] z.b., nur wie krieg ich nun sowas wie int *p = new int*[4] hin, ich hoiffe ihr wisst was ich meine.
-
Das was du machen willst ist:
int **p = new int*[4];BR
Vinzenz
-
danke evilissimo

ist ein bischen verwirrend mit so vielen * zeichen.
wenn ich diese poinmter aus dem heap wieder entfernen möchte, schreibe ich dann wie bei normalen arrays auf dem heapdelete[] p;
?
-
So lange du nur den Speicher für die Zeiger entfernen willst ja.
Denn wenn du soetwas machst:
int ** p = new int*[5](); for(size_t i = 0; i < 5; ++i) p[i] = new int(10 * i);dann musst du den speicher folgendermaßen wieder freigeben:
for(size_t i = 0; i < 5; ++i) delete p[i]; delete[] p;BR
Vinzenz
-
ahja das was du schreibst hat bestimmt was damit zu tun das auf dem heap bei mehrdimensionalen arrays erst die erste dimension initialisiert wird und dann erst die zweite und so weiter? wäre das also ein delete von mehrdimensionalem pointer auf dem heap?
was size_t bedeutet, weiss ich leider nicht, ist das eine form von int?
-
Beginner13 schrieb:
ahja das was du schreibst hat bestimmt was damit zu tun das auf dem heap bei mehrdimensionalen arrays erst die erste dimension initialisiert wird und dann erst die zweite und so weiter? wäre das also ein delete von mehrdimensionalem pointer auf dem heap?
was size_t bedeutet, weiss ich leider nicht, ist das eine form von int?Ja das war ein Beispiel ähnlich dem von mehrdimensionalen Arrays, nur das dieses ein eindimensionales Array auf dem Heap mit zeigern auf int Objekten die auch auf dem Heap sind

size_t ist ein Datentyp wie int auch einer ist.

BR
Vinzenz
-
du machst mich ganzz fertig evilissimo
.
mach ich dann einen zweidimensionalen array nur mit zeigern so?int ** p = new int*[5](); for(size_t i = 0; i < 5; ++i) p[i] = new int*(10 * i);
-
Beginner13 schrieb:
du machst mich ganzz fertig evilissimo
.
mach ich dann einen zweidimensionalen array nur mit zeigern so?int ** p = new int*[5](); for(size_t i = 0; i < 5; ++i) p[i] = new int*(10 * i);Ein zweidimensionales Array nur mit Zeigern geht so:
int ***p = new int**[5](); for(size_t i = 0; i < 5; ++i) p[i] = new int*[5]();
-
Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum C++/CLI mit .NET in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.