huo_hu 发表于 2020-9-24 08:48
局部变量在栈分配是不对的,一般情况是使用寄存器来操作.
你这个程序刻意的打印未赋值的变量所以才有上面 ...
对于下面这样的局部变量是不可能分配给寄存器的。
void foo(void)
{
int a[1024];
...
}
不同的平台和编译器对函数的参数和局部变量的处理是不一样的,在x86平台上局部变量一般是在栈上分配,进入函数不会自动初始化局部变量,退出函数也不会清理变量的值。所以一些涉及加密解密的软件其代码都是“显式”的初始化和清理内存的,以避免在内存中遗留关键信息。