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.


Anmelden zum Antworten