2017-02-08 3 views
0

Я писал C-программу. Где у меня есть структура с членами char *.Могу ли я назначить значение #define для Char *?

#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); 

Я посылаю точку структуры к функции, и я знаю, что лучшая практика заключается в выделении памяти для S1 и скопировать строку, что когда-либо мы хотим и освободить выделенную память после использования, как показано ниже

ss->s1 = (char*) MEM_alloc(sizeof(char) * (strlen(SS_Value_1) + 1); 
strcpy(ss->s1, SS_Value_1); 

использовать переменную ss.s1 в отчете и делать mem бесплатно.

MEM_free(ss.s1); 

Его рабочий тон не беспокоится. но я должен написать один и тот же фрагмент кода для нескольких членов char * в 36 различных условиях.

Другим способом является то, что, не выделяя никакой памяти, я могу прямо присваивать значения #define своим членам структуры, как показано ниже.

ss->s1 = SS_Value_1; 

Используйте эту переменную в отчете и не нужно освобождать память. таким образом также отлично, никаких проблем при выполнении образца.

, что я хотел бы знать,

ли это вызовет какие-либо утечки памяти? ли это прекратить выполнение для больших данных?

Заранее спасибо

С уважением, Судхиром

ответ

1

Это похоже на полукокса * ул; str = "abc";

То есть вы объявляете указатель на символ, создавая строковый литерал и назначая его адрес указателю. должен работать на любой объем данных.

Смежные вопросы