function returns address of local variable
函数返回地址都是不安全的,因为函数结束后,函数变量的内存都会释放,因此这个地址其他运用程序也可以用到,会被修改。
你用第二种没有那个警告,但是也是不安全的。
只要返回的是个地址,就不安全。当操作系统把这个内存分配给其他程序时,就会被修改。
比如这样:
char * testout()
{
char p[] = "abc";
return p;
}
int main()
{
printf("%s\n", testout()) ;
}
输出了乱码
这里是输出一个字符串,因为字符串的长度不可预测,所以被操作系统分配给其他程序的概率大,所以这里输出了乱码
你的程序是int,内存比较小,释放后被重新写的概率也比较小
版权声明:本文为ayi_99原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。