Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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.

ja richtig das waren keine Parameter sonder Variablen. und das mit dem * wars gewesen..

vielen dank..

Azo

Erwäge einfach std::string zu verwenden und Deine Probleme mit der Speicherverwaltung lösen sich erst einmal in Luft auf ;)

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.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.