当前位置:  技术问答>linux和unix

setjmp SEGMENTATION FAULT 错误。

    来源: 互联网  发布时间:2015-07-18

    本文导语:  linux环境下,程序中调用setjmp。运行此程序,出现Segmentation fault 错误, 删掉setjmp调用程序运行正常。 换成sigsetjmp()也出现同样错误。 而且我已经把 setjmp函数放在最靠近main()入口的地方了,还是出错。 其他...

linux环境下,程序中调用setjmp。运行此程序,出现Segmentation fault 错误,
删掉setjmp调用程序运行正常。
换成sigsetjmp()也出现同样错误。

而且我已经把 setjmp函数放在最靠近main()入口的地方了,还是出错。
其他小程序:调用setjmp的都运行正常。

查了网上的资料,有说这个bug的。但是我也没给返回值赋值。
This is a very common bug with setjmp() and longjmp() -- to use them properly, you CANNOT RETURN FROM THE PROCEDURE THAT CALLS setjmp(). 

URL:http://www.cs.utk.edu/~plank/plank/classes/cs360/360/notes/Setjmp/lecture.html

|
using valgrint to check the conflict.

|
我的觉得你的问题应该就是“从调用setjmp()的函数中返回了”
当从调用setjmp()的函数中返回时,linux的内存管理机制,确切的说是stack的管理机制会回收setjmp()所在的函数占用的栈空间,所以,保存fp及sp的jmp_buf也就不复存在了。所以,当利用longjmp()跳回时,自然就会出现segment fault!

|
是不是没给jmp_buf的参数分配空间?

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • setjmp、longjmp的实现,请指教
  • 困惑:setjmp()和longjmp()
  • 浅析C语言中的setjmp与longjmp函数
  • setjmp函数,一个jmp_buf用两次会有什么情况? 谢谢
  • 关于signal与setjmp的配合使用时遇到的一个问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3