我在一个遗留应用程序中遇到了很多返回char指针的函数。 其中一些返回指向本地字符数组的指针。它似乎在多次调用后(不是立即)导致崩溃,请看下面的用法:
char *f1(){
char buff[20];
char *ptr;
----
----
ptr=buff;
return ptr;
}
---
---
f2(f1());
f1()返回一个指向本地变量的指针,然后将其传递给另一个函数。在MS DEV中使用_DEBUG模式编译时,它会直接崩溃。但在发布模式下,它不会立即崩溃,但在进行大量此类调用后可能会发生崩溃。
当我将使用方式修改为以下内容时,它可以正常工作且没有任何问题。以下用法是否安全?
strcpy(arr,f1()); /* arr is fixed char array*/
f2(arr);