указатель на локальную переменную

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Dragonfly
Сообщения: 15
Зарегистрирован: 01 окт 2004, 18:23
Откуда: Киев

Как меня впечатляют эти рассуждения на тему "как интересно" :) . На самом деле, фактически только некоторые отладчики будут подчищать память в таких случаях. А в общем то - что может измениться в области памяти вашего приложения за те миллисекунды, пока будет возвращены данные (или даже в случае многозадачной ОС, все равно в область памяти программы никто не лезет, кроме вириев :) )
И накроет землю тень Армагеддона (и мы примем в этом активное участие :) )
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Dragonfly, здесь обсуждается не вероятность краша программы при тех или иных обстоятельствах, а выявляются правильные и неправильные методы прораммирования. Если вероятность краша существует, только глупый программист пойдёт по этому пути, не правда ли. По всей верятности, господин Dragonfly, вы не являетесь программистом в полном смысле этого слова, если допускаете подобные заявления.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Dragonfly
Сообщения: 15
Зарегистрирован: 01 окт 2004, 18:23
Откуда: Киев

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

Т.е. мне ничего другого и в голову не пришло бы и может быть это как раз и плохо.
Еще раз извините.
И накроет землю тень Армагеддона (и мы примем в этом активное участие :) )
Absurd
Сообщения: 1228
Зарегистрирован: 26 фев 2004, 13:24
Откуда: Pietari, Venäjä
Контактная информация:

char* some_function(char *pStr) { strcpy(pStr, "hello world!"); return str; }
Ха-ха-ха. А если буффер неподходящего размера?
2B OR NOT(2B) = FF
Dragonfly
Сообщения: 15
Зарегистрирован: 01 окт 2004, 18:23
Откуда: Киев

Ню-ню :) А енто уже есмь проблема главной функции (ибо не ООП). А если серьезно, то придется использовать string или CString.
И накроет землю тень Армагеддона (и мы примем в этом активное участие :) )
Ответить