Я пытаюсь передать литерал в функцию, присвоить его структуре и использовать позже.Нужно ли мне malloc()
и strcpy()
, или я могу сохранить char*
для последующего использования (статически выделяется или нет)?
Пример минималистического кода ниже:
struct data {
char *string;
...;
}
struct data *create_data(char *input_string, ...) {
struct data *result = malloc(sizeof(struct data));
result->string = input_string;
return result;
}
struct data *string = create_data("Hey", ...);
printf("%s", data->string);
или
struct data *create_data(char *input_string, ...) {
struct data *result = malloc(sizeof(struct data));
result->string = malloc(sizeof(input_string));
strcpy(result->string, input_string);
return result;
}
struct data *string = create_data("Hey",...);
printf("%s", data->string);
Могу ли я ожидать, что сработает первый, чтобы данные в памяти не перезаписывались или это небезопасно предположить?