一个c函数反汇编后
前三行一般是:
push ebp
mov ebp,esp
sub esp,8
第三行我没法理解
主要是那个“8”
我试了下
这个数不是固定的
有时候是48
有时候是14
等等
请问
这个数是干嘛的
怎么确定这个数的?
要不要理会?
------解决方案--------------------------------------------------------
这个数是干嘛的 -〉在栈中分配8字节的局部变量空间
怎么确定这个数的?-〉按局部变量所需空间大小确定
要不要理会?-〉一般不用
------解决方案--------------------------------------------------------
有些是编译器特有的行为,一般是分配局部val。
------解决方案--------------------------------------------------------
VC的Debug配置编译时会多分配一些额外的空间,用Release编译就不会有多余的了。
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
用汇编更少,不会浪费空间。如果你在你的函数里多加一句
如:a++,你可以看到这个局部变量是怎么调用的了
------解决方案--------------------------------------------------------
为防止缓冲区溢出的编译设置,-Gz