关于返回函数内定义的数组的问题
我们知道变量是有作用范围的,对于函数内定义的局部变量,在函数返回后,变量即消失了。
char * foo(void) { char buffer[10] = {1,2,3}; return buffer; }
对于上面的函数,在函数返回时,会将buffer数组的首地址放入寄存器(eax),而buffer所占用的内存被释放,内存中的值还在,但是随时可能被改变,所以通过返回的地址去读取内存时可能发生意向不到的情况!
我们知道变量是有作用范围的,对于函数内定义的局部变量,在函数返回后,变量即消失了。
char * foo(void) { char buffer[10] = {1,2,3}; return buffer; }
对于上面的函数,在函数返回时,会将buffer数组的首地址放入寄存器(eax),而buffer所占用的内存被释放,内存中的值还在,但是随时可能被改变,所以通过返回的地址去读取内存时可能发生意向不到的情况!