Speicher auf Struct mit new oder malloc reservieren?
-
Hallo!
Ich habe folgende Struktur:
typedef struct { uint32_t number_roi; uint32_t number_coordinates; } board_roi;Nun kann ich mir doch folgendermaßen einen Pointer auf die Struktur erzeugen:
board_roi * br; br = new board_roi; br->number_roi = 5;Was ist der Unterschied zu folgendem Ansatz?:
board_roi * br; br = (board_roi*) malloc(1* sizeof(board_roi)); br->number_roi = 5;Das ist doch äquvalent oder gibt es einen Unterschied zwischen den beiden Versionen?
Danke im Voraus für eure Hilfe!
-
:xmas1:
malloc ist C
new ist C++structs sehen in C++ so aus:
struct board_roi { uint32_t number_roi; uint32_t number_coordinates; };wie bei klassen
-
Hallo,
danke für deine Antwort.OK, malloc ist C. Aber was ist, wenn ich einen Array dynamisch erzeugt habe und hinterher die Größe ändern muss? Dann benutzt man doch meistens auch malloc , ob man in C++ programmiert, oder sehe ich das falsch?
-
dafür nimmt man in C++ std::vector
-
Ach so ist das...okay danke.
Leider kann ich den Vector nicht benutzen, da das Programm mithilfe der Strukturen auf ein selbstgebautes Board zugreift.Trotzdem danke!
-
und warum sollte da vector nicht gehen?
-
Für PODs könnte man
malloc()undfree()schon benutzen - ich würde aber streng davon abraten. Denn bei komplexeren Datentypen kommt es schnell zu Problemen, weil das Objekt nicht konstruiert, sondern nur Speicher dafür allokiert wird. In C++ würde ich dem Struct vielleicht auch noch Konstruktoren hinzufügen, damit für sichere Initialisierung gesorgt ist.