Probleme bei Struktur mit variabler Stringlänge



  • Hallo..

    Ich hab hier ein Problem, welches sich einfach nicht lösen lassen will. Ich versuche ein Array vom Typ einer eigenen Struktur zu basteln. Schwierig dabei ist, das die Struktur aus 2 Parametern vom Typ char * besteht. Mir stellt sich jetzt die Frage, wie ich jetzt effizient Speicher für das Array als auch die beiden Strings in der Struktur allociere?? Ich versuch das mal in code auszudrücken.

    struct parameterValStr{
      char *name;
      char *value;
    };
    
    main{
    struct parameterValStr *pvs;
    
    //Array vom typ pvs mit 2 elementen
    
    pvs=(parameterValStr *)malloc(sizeof(parameterValStr *)*2);
     pvs[0].name=(char *)malloc(sizeof(char)*32);
     pvs[0].value=(char *)malloc(sizeof(char)*32);
     pvs[1].name=(char *)malloc(sizeof(char)*32);
     pvs[1].value=(char *)malloc(sizeof(char)*32);
    
    //füllen auslesen..
    
    free(pvs);
    
    }
    

    So wie ich es geschrieben habe, funktioniert es nicht wirklich, aber ich hoffe die Idee dahinter ist ersichtlich geworden? Kann mir jemand sagen, wie man das richtig umsetzt?

    gruß Azo



  • das ist von dem syntaxfehlern bei main und den unnötigen casts und dem unnötigen sizeof(char) und den vergessenen frees und den 2 syntaxfehlern im ersten malloc mal abgesehen vollkommen ok.


  • Mod

    wobei - wenn die names- und valuestrings ohnehin in der länge beschränkt sind, könnte man genausogut gleich char arrays in der struktur verwenden. damit spart man sich dann all die lästigen mallocs und kann keine frees vergessen. es stellt sich die frage, was genau mit effizient gemeint ist. für gewöhnlich wird man den speicher erst reservieren, wenn er gebraucht wird - und dann gleich in der benötigten grösse.


Anmelden zum Antworten