关于返回函数内定义的数组的问题

  我们知道变量是有作用范围的,对于函数内定义的局部变量,在函数返回后,变量即消失了。

char * foo(void)
{
     char buffer[10] = {1,2,3};
     return buffer;   
}

对于上面的函数,在函数返回时,会将buffer数组的首地址放入寄存器(eax),而buffer所占用的内存被释放,内存中的值还在,但是随时可能被改变,所以通过返回的地址去读取内存时可能发生意向不到的情况!

 

posted @ 2017-03-26 22:10  九杯水  阅读(303)  评论(0)    收藏  举报