Zum Inhalt springen

Probleme bei Struktur mit variabler Stringlänge


Azero

Empfohlene Beiträge

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ß Azero

Link zu diesem Kommentar
Auf anderen Seiten teilen

Schwierig dabei ist, das die Struktur aus 2 Parametern vom Typ char * besteht.

Das sind keine 2 Parameter sondern 2 Variablen oder Membervariablen. Aber das nur am Rande ;)

pvs=(parameterValStr *)malloc(sizeof(parameterValStr *)*2);

Das ist falsch, du reservierst so nur Platz für 2 Pointer auf deine parameterValStr Struktur. Du willst aber Platz für 2 Strukturen reservieren also muss es so aussehen:


pvs=(parameterValStr *)malloc(sizeof(parameterValStr)*2);
[/PHP]

free(pvs);

Das reicht nicht du musst zuerst für jedes pvs Element den Speicher für name und value freigeben.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nein, er müsste immer noch dne Speicher für die Struktur allokieren. Wenn schon C++ dann könnte er noch vektor oder so nehmen.

Also bitte, ein

struct parameterValStr

{

std::string name;

std::string value;

};

parameterValStr *pvs = new parameterValStr[2];

... // tu was damit

delete [] pvs ;

ist doch bereits um Längen unkomplizierter, kürzer und übersichtlicher, da er sich um die Speicherverwaltung der Strings nicht selbst kümmern braucht. Und solange er feste Arraylängen hat, braucht er auch keinen Vektor.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...