Я натолкнулся на множество функций, возвращающих указатели на символы в одном устаревшем приложении.
Некоторые из них возвращают указатели на локальные массивы символов. Кажется, это вызывает сбои после нескольких вызовов (не сразу!), См. Использование ниже
char *f1(){
char buff[20];
char *ptr;
----
----
ptr=buff;
return ptr;
}
---
---
f2(f1());
f1 () возвращает локальную переменную-указатель и затем передает ее другой функции. Я получил сбой непосредственно, когда он скомпилирован с использованием режима _DEBUG в MS DEV. Но в режиме выпуска это не вызывает немедленного сбоя, но это может произойти после выполнения множества таких вызовов.
Когда я изменил использование, как показано ниже, оно работает без проблем. Является ли следующее использование
безопасно?
strcpy(arr,f1()); /* arr is fixed char array*/
f2(arr);