大佬教程收集整理的这篇文章主要介绍了在C中切换堆栈,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在16位DOS上,可能会发生中断,并且此中断最初将在同一堆栈上运行.如果在操作过程中被中断,则中断可能会崩溃,因为您只更新了s而不是sp.
在Windows和任何其他现代环境中,每个用户模式线程都有自己的堆栈.如果您的线程因任何原因而中断,它的堆栈和上下文将被安全地保留 – 您不必担心在您的线程和堆栈上运行其他东西.在这种情况下,cli / sti将保护您免受操作系统已经受到保护的攻击.
正如Greg所说,在Windows上交换堆栈的安全,@L_607_16@的方式是CreateFiber / SwitchToFiber.这确实会产生改变整个上下文的副作用,因此它不仅仅是切换堆栈.
这确实提出了你想做什么的问题.很多时候,切换堆栈是通过有限的堆栈空间获得的,在16位DOS上为64k.在Windows上,您有1 MB的堆栈,您可以分配更大的堆栈.你为什么试图切换堆栈?
以上是大佬教程为你收集整理的在C中切换堆栈全部内容,希望文章能够帮你解决在C中切换堆栈所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。