2017-02-08 1 views
0

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

gezeigt
ss->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

Antwort

1

Dies ist ähnlich char * str; str = "abc";

Das heißt, Sie deklarieren einen Zeichenzeiger, erstellen ein Zeichenfolgenliteral und weisen dem Zeiger seine Adresse zu. sollte für jede Datenmenge funktionieren.

Verwandte Themen