Malloc ... ?
-
Hallo zusammen,
könnt mir ma jemand dieses Programm erklären, ich werd da irgendwie net ganz schlau draus, vor allem die zeile mit dem "malloc" verstehe ich gar nicht...
#include <conio.h> #include <stdio.h> #include <stdlib.h> struct l { char name[20]; char CoName[40]; struct l *next; }; struct l *root=NULL, *dlaufen, *root1; void getdata() { } void speicher() { int i=0,k=0,j=0; while(i<5) { !!!!!!! dlaufen=(struct l*)malloc(sizeof(l)); !!!!! if(dlaufen!='\0') { printf("%i Type Name: ",i); fgets(dlaufen->name,14,stdin); dlaufen->next=root; //laufzeiger = anfang root = dlaufen; // angang = laufzeiger if(k==0); { root1=dlaufen; k++; } printf("%s", dlaufen->name); i++; } else printf("Speicher VOLL"); } } void ausgabe() { while (dlaufen != NULL) { printf("\n %s \n", dlaufen->name); dlaufen = dlaufen -> next; } } main() { speicher(); ausgabe(); getch(); }
_________________
MfG chaosLT
-
Hi,
malloc allokiert speicher und gibt dir einen Zeiger auf den anfang
des allokierten Speicherbereichs zurück. Als Parameter übernimmt es
die Größe des zu allokierenden Speichers in Bytes.
Da sizeof dir die Größe eines Datentyps in Byte angibt
passt ein l-struct genau in den allokierten Speicherbereich.Allerdings wird dein allokierter Speicher nicht mehr freigegeben,
also erzeugst du ein Speicherleck. Zum freigeben gibt es imho
die Funktion free( void* )Ansonsten, wenn ich nur auf das struct schaue, sieht es aus
wie ne einfach-verkettete Liste.
Da findest du mit google bestimmt was.
-
jap, das is ne verkette Liste, nur verstehe ich die logik dahinter nicht...
kann mir das vielleicht jemand erklären, was da passiert
-
Schau dir mal die c-Tutorials hier an.