Страница 2 из 2

Добавлено: 01 окт 2004, 19:47
Dragonfly
Как меня впечатляют эти рассуждения на тему "как интересно" :) . На самом деле, фактически только некоторые отладчики будут подчищать память в таких случаях. А в общем то - что может измениться в области памяти вашего приложения за те миллисекунды, пока будет возвращены данные (или даже в случае многозадачной ОС, все равно в область памяти программы никто не лезет, кроме вириев :) )

Добавлено: 01 окт 2004, 20:21
Romeo
Dragonfly, здесь обсуждается не вероятность краша программы при тех или иных обстоятельствах, а выявляются правильные и неправильные методы прораммирования. Если вероятность краша существует, только глупый программист пойдёт по этому пути, не правда ли. По всей верятности, господин Dragonfly, вы не являетесь программистом в полном смысле этого слова, если допускаете подобные заявления.

Добавлено: 01 окт 2004, 20:36
Dragonfly
Возможно я неправильно выразился. Естественно я не рекомендую использовать подобные методы. Все что я хотел сказать - это то что это предопределенно некорректный подход и столь длительное обсуждение его нецелесообразно, 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;
}

Т.е. мне ничего другого и в голову не пришло бы и может быть это как раз и плохо.
Еще раз извините.

Добавлено: 04 окт 2004, 11:40
Absurd
char* some_function(char *pStr) { strcpy(pStr, "hello world!"); return str; }
Ха-ха-ха. А если буффер неподходящего размера?

Добавлено: 04 окт 2004, 11:45
Dragonfly
Ню-ню :) А енто уже есмь проблема главной функции (ибо не ООП). А если серьезно, то придется использовать string или CString.