Chinaunix首页 | 论坛 | 博客
  • 博客访问: 320325
  • 博文数量: 43
  • 博客积分: 1044
  • 博客等级: 准尉
  • 技术积分: 658
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-20 14:56
个人简介

人法地,地法天,天法道,道法自然。

文章分类

全部博文(43)

文章存档

2019年(1)

2013年(3)

2012年(15)

2011年(24)

分类: C/C++

2012-04-08 12:49:34

gcc对C语言有很多扩展。昨天看到《Binary Hacks:黑客秘笈100选》中说GCC对标签也进行了扩展。

点击(此处)折叠或打开

  1. #include <stdio.h>

  2. int main()
  3. {
  4.     void *label = NULL;
  5.     label = &&error;

  6.     goto *label;
  7.     return 0;

  8. error:
  9.     return -1;
  10. }

可以看出标签可以在赋值给一个void *的变量上。

经实验:
1.可以实现函数间跳转,不过跳过去之后会造成进程堆栈错误。
2.可以向NULL跳。但是会core dump或者crash。
阅读(1932) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~