学习C:C中堆栈下溢的示例

学习C:C中堆栈下溢的示例,第1张

概述在调用和从方法调用返回的情况下,C中的一个简单示例可能会导致堆栈下溢.我熟悉这个调用约定,即这个调用方式,即这个cdcall和cdecl以及它们将清理栈的方式.具体来说,不会堆栈下溢由编译器自动为我生成的代码? 什么情况可以让我陷入麻烦的堆栈下溢? 我可以看到实际发生的唯一方法是,如果您声明使用stdcall(或任何其他调用约定来指定被调用程序清理堆栈)的函数,然后通过指定为cdecl的函数指针来 在调用和从方法调用返回的情况下,C中的一个简单示例可能会导致堆栈下溢.我熟悉这个调用约定,即这个调用方式,即这个cdcall和cdecl以及它们将清理栈的方式.具体来说,不会堆栈下溢由编译器自动为我生成的代码?

什么情况可以让我陷入麻烦的堆栈下溢?

解决方法 我可以看到实际发生的唯一方法是,如果您声明使用stdcall(或任何其他调用约定来指定被调用程序清理堆栈)的函数,然后通过指定为cdecl的函数指针来调用该函数(或任何其他调用约定,其中堆栈被调用者清理).如果这样做,被调用的函数将在返回之前d出堆栈,然后调用者也会d出堆栈,导致下溢和可怕的事情.

在成员函数的具体情况下,调用约定通常被称为thiscall,调用者或被调用方是否清除堆栈,这取决于编译器.

有关呼叫约定的详细信息,请参见here.

总结

以上是内存溢出为你收集整理的学习C:C中堆栈下溢的示例全部内容,希望文章能够帮你解决学习C:C中堆栈下溢的示例所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1233638.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存