Возможно я неправильно выразился. Естественно я не рекомендую использовать подобные методы. Все что я хотел сказать - это то что это предопределенно некорректный подход и столь длительное обсуждение его нецелесообразно, IMHO. Я уверен, что это всем и так известно, но по-моему классически бедет так:
#include <stdio.h>
#include <string.h>
#include <unistd.h>
char* some_function(char *pStr) { strcpy(pStr, "hello world!"); return str; }
int main()
{
char str[1024]; some_function(&str);
// usleep((long)1E3) /* подождать пока локальная переменная удалится

))
printf("%s\n", str);
return 0;
}
Т.е. мне ничего другого и в голову не пришло бы и может быть это как раз и плохо.
Еще раз извините.