char *Dosomething()
{
char i[32*1024];
memset(i,0,32*1024);
........
return i;
}
两个重大问题:
1. 临时变量通过堆栈实现的(M51除外),太大的临时变量数组会冲掉堆栈
2. 返回堆栈中的地址是非常危险地。因为堆栈中的值在退出函数体后无法确定
关于临时变量:
(1)不要对临时变量作地址操作。因为你不知道编译器是否讲这个变量映射到寄存器。
(2)在函数返回的时候,不要返回临时变量的地址,或临时指针变量,因为堆栈中的内容是不确定的(出了这个函数,存放在堆栈的局部变量就没有意义了)
(3)不要申请太大的临时变量数组,防止堆栈溢出。