malloc für einen Pointer auf ein Array
-
Hallo,
ich bin durch Umwege auf diese Frage gestoßen, sie lässt mich jetzt jedoch nicht los. Mir ist wohl bekannt, wie das Problem ohne malloc zu lösen ist.
Ich möchte für ein dynamisches Array folgender Struktur speicher allokieren:
typedef struct mystruct { int x, y, z; } MY_STRUCT, *PMY_STRUCT;
Das "versuche" ich folgendermaßen:
MY_STRUCT** struct_array = NULL; struct_array = (MY_STRUCT**)malloc(4); *struct_array = (MY_STRUCT*)malloc(sizeof(MY_STRUCT) * 5); free(struct_array);
Mein Gedankengang ist folgender:
Ich habe eine Struktur mit einer größe von 12 Byte.
MY_STRUCT* wäre ein Pointer (mit Größe von 4 Byte) auf diese Struktur.Die Frage ist jetzt jedoch nur, wie ich mit einem Zeiger auf diesen Zeiger umgehen muss, insbesondere da es sich um ein Array von Zeigern auf diese Struktur handelt.
Bitte um Hilfe^^.
-
Hi,
ich würd sagen, je nachdem, brauchst du nicht unbedingt nen Doppelpointer:typedef struct mystruct { int x, y, z; } MY_STRUCT, *PMY_STRUCT; void kuggi ( PMY_STRUCT pms ) { printf ( "x: %d y: %d z: %d\n", pms->x, pms->y, pms->z ); } int main() { int n = 3, i; PMY_STRUCT pms = malloc ( n * sizeof (MY_STRUCT) ); if ( pms == NULL ) { puts("Out of memory"); return 0; } pms[0].x = pms[0].y = pms[0].z = 1; pms[1].x = pms[1].y = pms[1].z = 2; pms[2].x = pms[2].y = pms[2].z = 3; for ( i = 0; i<n; i++ ) kuggi ( &pms[i] ); ...