您好、欢迎来到现金彩票网!
当前位置:在线斗牛棋牌游戏 > 尾递归 >

main()函数自己调用自己时的栈空间 和 CPU寄存器等是否会恢复到

发布时间:2019-07-10 06:50 来源:未知 编辑:admin

  main()函数自己调用自己时的栈空间 和 CPU寄存器等是否会恢复到初始状态?

  main()函数自己调用自己时的栈空间 和 CPU寄存器等是否会恢复到初始状态?

  一般程序开始执行的时候,CPU的寄存器和堆栈等都是设置好的,如果在程序中直接调main的话,堆栈和寄存器是不是就和刚开始运行的不一样了,第一次运行时保存在堆栈里面的数据是不是还在...

  如果在程序中直接调main的话,堆栈和寄存器是不是就和刚开始运行的不一样了,第一次运行时保存在堆栈里面的数据是不是还在?

  如果原先的数据在的话, 在不存在死循环的情况下,是不是多次调用后,可能导致栈溢出 ?展开我来答

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  展开全部我觉得会溢出追问那我 在 接受 底层 传上来的复位命令后, 重新调用 main()函数时, 怎么把 原来的残留数据清除呢追答

  

  之前的调用栈肯定还是在的,只要编译器不是智能到把这种尾递归都变成循环,终有某个时刻会栈溢出的,内存有限。寄存器倒不会,换到一个新的递归层,寄存器都变成新值了。

  warning C4717: “main”: 如递归所有控件路径,函数将导致运行时堆栈溢出

  所以最好不要这么做,可以把main()里面的所有语句打包成一个f(),然后递归调用这个f()。

  不会恢复。至于会否栈溢出,要看栈多大,每次调用用掉多少栈空间。如果是Windows XP的话,注意好把大内存变量开在堆里,不死循环的话一般不会栈溢出。

http://missartypants.com/weidigui/312.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有