在调试一个lib库是出现下面的运行错误:
Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.
从字面上看,应该是因为栈溢出,或者内存越界导致ESP的值被意外更改。原因可能有三:
1, 确实有内存冲突的情况发生。溢出或者越界。
2, 调用lib库的的压栈方式,和编译lib库本身的压栈方式不一致,导致栈内数据错乱。
3, 使用lib的方法不正确,导致调用的并不是lib中对应的函数。比如,lib编译时加上了特定的宏开关,而在使用时没有同步上。