如题,这里做个小测试,
#include <stdio.h>
char *getString()
{
char info[] = "hello";
return info;
}
int main()
{
char *result = getString();
printf("%s\n", result);
return 0;
}
编译时报错:
warning: function returns address of local variable [-Wreturn-local-addr]
return info;
运行时,直接输出:
Segmentation fault
那么这个临时对象是什么时候被回收的呢?
于是测试了一下,直接打印函数的返回内容:
printf("%s\n", getString());
结果也是输出:
Segmentation fault
由此可见,这个函数返回的字符串就不能使用。