История изменений
Исправление vodz, (текущая версия) :
Если там, где используется df нет, принимающей стороны ( указателя, который хранил бы адрес ), то на память не будет указателя после выполнения printf.
В вашем примере это так, но это не обязательно так бывает.
Можно хранить в указателе на указатель в аргументе:
char *df(char **mem) {
*mem = malloc(...);
........
return *mem;
}
char *df() {
static char *mem = realloc(mem, ...);
........
return *mem;
}
printf("%s\n", (p = df()));
Исходная версия vodz, :
Если там, где используется df нет, принимающей стороны ( указателя, который хранил бы адрес ), то на память не будет указателя после выполнения printf.
В вашем примере это так, но это не обязательно так бывает.
Можно хранить в указателе на указатель в аргументе:
char *df(char **mem) {
*mem = malloc(...);
........
return *mem;
}
char *df() {
static char *mem = realloc(mem, ...);
........
return *mem;
}
printf("%s\n", (p = df()));