__cdecl
由调用者(父亲函数)回收参数所占用的栈空间,本质就是把栈指针回挪,向栈底(高地址)挪
父函数代码如下
子函数CFunc采用__cdecl
可以发现 int x=CFunc(i,j);
的反汇编代码里紧跟着call的就是add esp,8
__stdcall
由被调用者回收参数所占用的栈空间
子函数DFunc(被调用者)
301行}
的反汇编代码中有一句ret 8
,其中一个功能就相当于add esp,8
,回收call这个子函数前两个push所占用的栈空间
父函数(调用者)
可以发现父函数里00402E6C call后没有add esp,8