有这样的代码:
char text[] = "zim"; int x = 777;
如果我查看堆栈中的x和文本放置的输出是:
09 03 00 00 7a 69 6d 00
哪里:
> 09 03 00 00 = 0x309 = 777 < - int x = 777
> 7a 69 6d 00 = char text [] =“zim”(ASCII码)
现在有了try..catch的代码:
char text[] = "zim"; try{ int x = 777; } catch(int){ }
堆栈:
09 03 00 00 **97 85 04 08** 7a 69 6d 00
现在在text和x之间放置新的4字节值.如果我添加另一个catch,那么会有以下的东西:
09 03 00 00 **97 85 04 08** **xx xx xx xx** 7a 69 6d 00
等等.我认为这是与异常处理相关联的一些值,并且在堆栈展开期间使用它来在try块中抛出异常时找到适当的catch.但是问题是,这个4字节值是什么(可能是一些地址去排除处理程序结构或某些id)?
我在32位Linux机器上使用了g 4.6.
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。