Speicher anlegen
-
Guten Tag,
kann mir jemand erklären wie man speicher anlegt bei der Form:
int* a;
Wie würde ich hier Speicher anlegen?
-
Eigentlich gar nicht.
Wozu brauchst du das? Bzw. was hast du genau vor?
-
int *a;
In diesem Fall würde es ja so gehen :
a = new int;
WIe würde ich dann in dem anderen Fall anlegen ?
Mir geht es nur um die Anwendung
-
space3 schrieb:
int *a;
In diesem Fall würde es ja so gehen :
a = new int;
Joa, syntaktisch ist das richtig, genau wie
new int[123]
richtig wäre. Aber bzgl. wie man C++ verwendet ist es falsch.new
brauchst du theoretisch, wenn du Objekte über den Scope hinaus am Leben erhalten musst (was in deinem Beispiel erstmal überhaupt nicht ersichtlich ist), und falls das der Fall ist, machst du das nicht roh, weil es zu fehleranfällig ist (siehe Smart Pointer)
-
space3 schrieb:
int *a;
In diesem Fall würde es ja so gehen :
a = new int;
WIe würde ich dann in dem anderen Fall anlegen ?
Welchen anderen Fall meinst Du?
-
Hier :
Beitrag 16:41:57 13.10.2017 Titel: Speicher anlegen Zitieren
Guten Tag,kann mir jemand erklären wie man speicher anlegt bei der Form:
int* a;
-
space3 schrieb:
a = new int;
-
int* a; int *a; int * a ;
alles bedeutet exakt dasselbe.
-
Deine Frage ist sehr vage, daher können wir sie wohl nicht zufriedenstellend beantworten. Auch macht deine letzte Antwort (Wiederholen der Ausgangsfrage) überhaupt nichts klar.
Ich versuche mal eine Antwort, weil Freitag ist und ich jetzt Feierabend habe:
Für die Variable a (den Pointer selbst) brauchst du überhaupt keinen Speicher anzulegen, das macht der Compiler automatisch.
Nun soll a ja auf irgendwas zeigen.
Das kann ein bestehendes Objekt sein. Dann brauchst du nichts anzulegen.
Oder das kann ein neues Objekt im Freispeicher sein. Dann musst du tatsächlich etwas anlegen. Das geht, wie schon geschrieben, mit (a)
new
oder (b)new[]
(sollte man aber nicht so benutzen!). Es empfiehlt sich dann aber zu überlegen, ob man mit einemstd::unique_ptr<int>
(a) oder einemstd::vector<int>
(b) nicht viel besser bedient wäre (bei (b) ggf. auchstd::unique_ptr<int[]>
).Vage Frage -> vage Antwort.
-
Speicher allokieren mit malloc() http://www.cplusplus.com/reference/cstdlib/malloc/
Speicher wieder freigeben mit free() http://www.cplusplus.com/reference/cstdlib/free/Thread "Pointer verstehen mit malloc und free" https://www.mikrocontroller.net/topic/426303
Gleiche Aufgabe: "Frage zu malloc und free" https://www.c-plusplus.net/forum/342707
-
rudi994 schrieb:
Speicher allokieren mit malloc() http://www.cplusplus.com/reference/cstdlib/malloc/
Speicher wieder freigeben mit free() http://www.cplusplus.com/reference/cstdlib/free/Thread "Pointer verstehen mit malloc und free" https://www.mikrocontroller.net/topic/426303
Gleiche Aufgabe: "Frage zu malloc und free" https://www.c-plusplus.net/forum/342707malloc und free ist C.