function returns address of local variable

  • Post author:
  • Post category:其他



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 版权协议,转载请附上原文出处链接和本声明。