Ich habe ein C - Programm geschrieben. Wo ich eine Struktur mit char * Mitgliedern habe.Kann ich Char * einen Wert #define zuweisen?
#define SS_Value_1 "Value for SS1"
#define SS_Value_1 "Value for SS2"
struct aSamplestruct {
char* s1;
char* s2;
}aSample;
aSample ss;
fun1(&aSample);
Ich schicke die Struktur weist auf eine Funktion, und ich weiß, dass die Best-Practice-Speicher S1 zuzuordnen ist und die Zeichenfolge kopieren, was immer wir und den verwendeten Speicher nach Gebrauch wollen, wie weiter unten
gezeigtss->s1 = (char*) MEM_alloc(sizeof(char) * (strlen(SS_Value_1) + 1);
strcpy(ss->s1, SS_Value_1);
Verwenden Sie die Variable ss.s1 in einem Bericht und machen Sie mem frei.
MEM_free(ss.s1);
Es funktioniert gut, keine Sorgen. aber ich muss das gleiche Stück Code für einige 10 Char * Mitglieder in 36 verschiedenen Bedingungen schreiben.
Der andere Weg ist, dass ich, ohne Zuweisung von Speicher, die #define-Werte direkt zu meinen Strukturelementen wie folgt zuweisen kann.
ss->s1 = SS_Value_1;
verwenden diese Variable in einem Bericht und keine Notwendigkeit, alle Speicher freizugeben. auf diese Weise auch gut, keine Probleme in einer Beispielausführung.
was würde Ich mag wissen, ist
ob diese Speicherverluste verursachen? stoppt es die Ausführung für große Daten?
Vielen Dank im Voraus
Grüße, Sudhir