make_text
возвращает txt
, который выделяется в локальном хранилище в функции make_text
. Когда возвращается make_text
, все вещи в локальном хранилище этой функции очищаются. Для этого вам нужно использовать динамическое хранилище с malloc()
:
char *make_text(void)
{
char *txt = malloc(MAXLEN);
// do stuff
return txt;
}
Память, выделенная с помощью malloc()
, не исчезает при возврате функции. Это означает, что C не знает, когда именно безопасно освободить, поэтому, когда вы закончите с этим, вы должны вызвать free()
на txt
, чтобы вручную освободить память. В противном случае у вас будет утечка памяти.