您的位置:首页 > 其它

一个错误,一个教训,关于堆栈平衡

2007-05-08 10:06 253 查看
我一直以为,不同语言决定函数的调用约定,比如,C++使用cdecl,Delphi使用register,因为在查看Delphi帮助<Calling conventions>时,以及经常看到"各种语言中调用子程序的约定是不同的"这样的话,就武断的认为调用约定由语言决定,而API和DLL导出函数都是Stdcall约定。这就是我的错误。

现在,我认为约定是具体函数决定的。就如同DLL导出函数我们人为的指定了调用约定一样。所以,在处理堆栈平衡时,首先要看看函数返回时,是否自己做了堆栈平衡处理,如同代码add esp,4这样的代码或者Ret 8,否则就需要调用者使用add esp,4等来平衡。

以上胡言乱语,以提醒自己想多了,未必好事,得试一下。让看客得笑了。

哈哈哈。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: