我的编程空间,编程开发者的网络收藏夹
学习永远不晚

57个让C编译器崩溃的代码分别是怎样的

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

57个让C编译器崩溃的代码分别是怎样的

本篇文章给大家分享的是有关57个让C编译器崩溃的代码分别是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

我不清楚你是否很高兴看到你的程序会让编译器崩溃的情况,反正我很喜欢,相当于发现了编译器的 bug。

小编列出 57 段代码以及相应的编译器版本和编译参数,在这个环境下对代码进行编译会导致编译器崩溃。

C1 : Crashes Clang 2.6 at -O0:

#pragma pack(1)  struct S1 {    int f0;    char f2  };  struct {    struct S1 f0      }  a[] = { 0 }        ;

C2 : Crashes Clang 2.6 at -O2:

struct S0 {    int f0:1;    int f4  }  a;  void fn1 () {    struct S0 b[][1][1] = { 0 };    b[0][0][0] = a;  }

C3 : Crashes Clang 2.6 at -O2:

unsigned short a;  int b;  char c;  short fn1 () {    return 1 / a;  }  void fn2 () {    b = fn1 ();    char d = b;    c = d % 3;  }

C4 : Crashes Clang 2.6 at -O3:

int a, b, c, d, e;  #pragma pack(1)  struct S0 {    int f0:14;    int f1:13;    int f2:28;    int f3:23;    int f4:12  };  void fn1 (struct S0);  void fn2 () {    int f;  lbl_2311:    ;    struct S0 g = { 0, 0, 1 };    fn1 (g);    b && e;    for (; c;) {      if (d)        goto lbl_2311;      f = a && 1 ? 0 : 1;      g.f4 = f;    }  }

C5 : Crashes Clang 2.6 at -O2:

 int crc32_context, g_2 = 0, g_5;  int g_8;  int *g_39, *g_371;  int g_81;  int func_1_l_15 ;  static short safe_add_func_int16_t_s_s ( short si1, int si2 ) {      return si1 > 67 ? si1 : si1 + si2;    }       static int func_1 (  ) {      int l_462 = 0;      g_2 = 0;      for ( ;    g_2 < 12;    g_2 = safe_add_func_int16_t_s_s ( g_2, 5 ) )     {         g_5 = 1;         for ( ;   g_5;   ++g_5 )    {        g_8 = 1;        for ( ;   g_8 >= 0;   g_8 = g_8 - 1 )        {            func_1_l_15 = 1;            for ( ;   func_1_l_15;              func_1_l_15 =   func_1_l_15  - 1  )         if ( g_8 )        break;          }        g_371 = &l_462;        int *l_128 = &g_81;        *l_128 = *g_39;      }   *g_371 =    0 != 0   ;       }      return 0;    }     int main (  ) {      func_1 (  );      crc32_context = g_2;      crc32_context += g_5;    }

C6 : Crashes Clang 2.6 at -O0:

#pragma pack(1)  struct S2 {    int f1;    short f4  };  struct S3 {    struct S2 f1;    int f3:14  };  struct {    struct S3 f3      }  a = { 0, 0, 0 };

C7 : Crashes Clang 2.6 at -O1:

int *a;  static int **b;  int c, d, e;  void fn1 () {    d = &b == c;    for (;;) {      int **f = &a;      if (e) {      } else       b = f;      if (**b)        continue;      **f;    }  }

C8 : Crashes Clang 2.6 at -O1:

#pragma pack(1)  struct S0 {    int f3;    char f4  };  struct {    struct S0 f6;    int f8  }  a = { 0, 0, 0 };

C9 : Crashes Clang 2.6 at -O2:

struct S0 {    int f0;    int f1;    short f3;    int f7;    int f8  }  b;  int a, c, d, e, f;  void fn1 (struct S0 p1) {    d++;    c = p1.f8;    e = 0;    a = p1.f7;  }  void fn2 () {    e = 0;    for (; e; e++) {      if (d)        for (;;) {        }      --f;    }    fn1 (b);  }

C10 : Crashes Clang 2.6 at -O1:

union U2 {    int f0;    unsigned short f2  }  b;  static int a = 1;  void fn1 (int p1, unsigned short p2) {  }  int fn2 (union U2);  union U2 fn3 ();  static unsigned long long fn5 () {    fn1 (b.f2, b.f0);    return 0;  }  static char fn4 () {    fn5 ();    return 0;  }  int main () {    a || fn2 (fn3 (fn4 () ) );  }

C11 : Crashes Clang 2.7 at -O1:

int *a;  static int **b;  int c, d, e;  void fn1 () {    d = &b == c;    for (;;) {      int **f = &a;      if (e) {      } else       b = f;      if (**b)        continue;      **f;    }  }

C12 : Crashes Clang 2.7 at -O0:

char a;  unsigned char b;  int c;  void fn1 () {    (b ^= c) != a;  }

C13 : Crashes Clang 2.7 at -O2:

int a, b;  void fn1 ();  void fn2 (short p1) {    short c;    c = (65532 | 3) + p1;    fn1 (c && 1);    b = (0 == p1) * a;  }

C14 : Crashes GCC 3.2.0 at -O1:

void fn1 () {    struct S0 *a;    struct S0 *b, *c = &a;    struct S0 **d = &c;    if (&b == &a) {    }  }

C15 : Crashes GCC 3.2.0 at -O3:

volatile int a, b, c, i;  char d;  void fn1 () {    int e;    {      for (;; c++) {        int f[50] = { };        if (b) {          {            0;            {              {                int g = a, h = d;                e = h ? g : g / 0;              }            }            a = e;          }        }      }    }  }  void main () {    i = 0 / 0;    a;  }

C16 : Crashes GCC 3.2.0 at -O3:

int a, c;  volatile int b;  void fn1 () {    b;    for (;;)      break;    int d = b, e = a;    c = a ? d : d % 0;  }  void fn2 () {    if (0 % 0)      b;  }

C17 : Crashes GCC 3.2.0 at -O2:

union U1 {    int f0;    char f1  };  void fn1 (union U1 p1) {    p1.f1 = 0;    for (; p1.f1;) {    }  }

C18 : Crashes GCC 3.2.0 at -O1:

int a, b;  void fn1 () {    b = 4294967290UL <= a | b;  }

C19 : Crashes GCC 3.2.0 at -O3:

int a, b, c;  int fn1 (int p1, int p2) {    return p1 - p2;  }  void fn2 () {    int d;    int **e;    int ***f = &e;    d = a && b ? a : a % 0;    if (fn1 (f == 0, 2) )      c = ***f;  }

C20 : Crashes GCC 3.3.0 at -O3:

int a, b, d;  struct S0 {    int f3  };  int *volatile c;  void fn1 (struct S0);  void fn2 () {    int e;    struct S0 **f;    struct S0 ***g = &f;    (a && b && b ? 0 : b) > (&c && 0);    e = 0 == g;    d = e >> 1;    for (;;)      fn1 (***g);  }

C21 : Crashes GCC 3.4.0 at -O3:

int a, b;  struct U0 {    char f0;    int f2  };  void fn1 () {    struct U0 c;    for (; c.f0 != 1; c.f0 = c.f0 + a)      b -= 1;  }

C22 : Crashes GCC 3.4.0 at -O3:

int a, b, d, e;  struct S0 {    int f3  };  int *c;  void fn1 (struct S0);  void fn2 () {    struct S0 **f;    struct S0 ***g = &f;    (a && b && b ? 0 : b) > (&c == d);    e = 1 < (0 == g);    for (;;)      fn1 (***g);  }

C23 : Crashes GCC 4.0.0 at -O2:

int ***a;  int b;  int *c;  void main () {    if (&c == a)      b = 0 == *a;  }

C24 : Crashes GCC 4.0.0 at -O2:

int a[][0];  int *const b = &a[0][1];  int fn1 () {    return *b;  }

C25 : Crashes GCC 4.0.0 at -O0:

int a, b;  unsigned char c;  void fn1 () {    (0 >= a & (0 || b) ) > c;  }

C26 : Crashes GCC 4.0.0 at -O1:

struct {    int f9:1  }  a;  const int b[] = { 0 };  void fn1 ();  void main () {    for (;;) {      a.f9 = b[0];      fn1 ();    }  }

C27 : Crashes GCC 4.0.0 at -O0:

int a, c;  unsigned char b;  void fn1 () {    b > (c > 0 & 0 < a);  }

C28 : Crashes GCC 4.0.0 at -O2:

int **a[][0];  static int ***const b = &a[0][1];  void fn1 ();  int fn2 () {    return ***b;    fn1 ();  }  void fn1 () {    **b;  }

C29 : Crashes GCC 4.1.0 at -O1:

volatile int ***a;  int b;  int **c;  void fn1 () {    if (&c == a)      b = 0 == *a;  }

C30 : Crashes GCC 4.1.0 at -O1:

struct {    int f0;    int f2  }  a;  int b;  void fn1 () {    a.f2 = 0;    int *c[] = { 0, 0, 0, 0, &a.f0, 0, 0, 0, &a.f0 };    b = *c[4];  }

C31 : Crashes GCC 4.1.0 at -O2:

int a, b;  unsigned c;  void fn1 () {    for (; c <= 0;)      if (b < c)        a = 1 && c;  }

C32 : Crashes GCC 4.1.0 at -O1:

unsigned a;  int b;  void main () {    unsigned c = 4294967295;    int d = c;    b = a <= d || a;  }

C33 : Crashes GCC 4.1.0 at -O1:

const volatile long a;  void main () {    printf ("%d\n", (int) a);  }

C34 : Crashes GCC 4.1.0 at -O3:

int a, b;  union U1 {    int f0;    int f1  };  void fn1 () {    union U1 c = { 1 };    int d = 1;    if ( (c.f1 & a ? c.f1 : 1 - a) ^ d) {    } else     b = 0;  }

C35 : Crashes GCC 4.2.0 at -O1:

volatile int ***a;  int b;  int **c;  void fn1 () {    if (&c == a)      b = 0 == *a;  }

C36 : Crashes GCC 4.2.0 at -O1:

struct S2 {    volatile int f5:1;    int f6  };  static struct S2 a;  void main () {    printf ("%d\n", a.f5);  }

C37 : Crashes GCC 4.3.0 at -O1:

long long *a;  int b;  void fn1 () {    long long **c = &a;    int d = 7;  lbl_2890: {      long long **e = &a;      b = (e == c) < d;      d = 0;      goto lbl_2890;    }  }

C38 : Crashes GCC 4.3.0 at -O2:

struct S2 {    volatile int f5:1;    int f6  };  static struct S2 a;  void main () {    printf ("%d\n", a.f5);  }

C39 : Crashes GCC 4.3.0 at -O3:

int a;  short b;  void fn1 () {    int c[0];    for (;;) {      a = c[0];      b = 0;      for (; b < 7; b += 1)        c[b] = 0;    }  }

C40 : Crashes GCC 4.3.0 at -O1:

volatile int **a;  int *b;  void fn1 () {    if (a == &b)      **a;  }

C41 : Crashes GCC 4.3.0 at -O3:

int a, b, c, d, e, f;  void fn1 () {    char g;  lbl_120:    if (b || e >= 0 & d >= 0 || a)      return;    g = f < 0 ? 1 : f;    d = g == 0 || (char) f == 0 && g == 1 ? 0 : 0 % 0;    if (c)      goto lbl_120;  }

C42 : Crashes Intel CC 12.0.5 at -O1:

struct U0 {    int f0  }  a;  struct U0  fn1 () {    return a;  }  void main () {    0 > a.f0;    fn1 ();  }

C43 : Crashes Open64 4.2.4 at -O3:

int a;  int *b;  unsigned c;  void fn1 () {    for (; a; a--)      if (*b) {        c = 0;        for (; c >= 5; c++) {        }      }  }

C44 : Crashes Open64 4.2.4 at -O3:

short a;  void fn1 () {    long b;    b = 44067713550;    a |= b;  }

C45 : Crashes Open64 4.2.4 at -O3:

volatile int a;  void fn1 () {    int b = 1;    a || b--;  }

C46 : Crashes Open64 4.2.4 at -O2:

int a, b;  void fn1 ();  void fn2 ();  void fn3 () {    fn2 ();    fn1 ();  }  void fn2 () {    if (1) {    } else     for (;; b++) {        int c = 0;        int *d = &a;        int **e = &d;        *e = &c;        *d = 0;        *d |= 0;      }  }

C47 : Crashes Open64 4.2.4 at -O3:

struct S0 {    int f1:1  };  int a, b;  void fn1 () {    for (; b;) {      struct S0 c = { };      if (1) {        c = c;        a = c.f1;      }    }  }

C48 : Crashes Open64 4.2.4 at -O3:

int a, b;  int fn1 () {    int *c = &b;    a = 0;    for (; a >= -26; --a) {      unsigned d = 18446744073709551615;      int *e = &b;      *e &= d;    }    return *c;  }

C49 : Crashes Open64 4.2.4 at -O3:

static int a, c, d;  int b;  int *e;  void fn1 () {    for (; a; a += 1) {      b = 0;      for (; b > -16; --b)        for (; c;) {          int *f = &d;          *f = 0;        } *e = 0;    }  }

C50 : Crashes Sun CC 5.11 at -xO4:

unsigned char a, d;  struct {    int f2  }  b;  int c, e;  void fn1 (p1) {  }  void fn2 () {    c = 0;    for (; c <= 0;)      e = b.f2;    fn1 (0);    b = b;    d = -a;  }

C51 : Crashes Sun CC 5.11 at -fast:

int a, c;  int b[1];  void fn1 () {    short d;    for (; a; a -= 1) {      d = b1 = b1;      b[0] = 0;    }  }

C52 : Crashes Sun CC 5.11 at -xO4:

int a, b, d;  short c;  int fn1 (p1) {    return a ? 0 : p1;  }  void fn2 () {    int e = 0;    for (;;) {      c = 0;      d = fn1 (e ^ ~~c);      d && b;    }  }

C53 : Crashes Sun CC 5.11 at -fast:

long a;  int b, d;  int *c;  void fn1 () {    int *e;    for (;; b--)      for (; d;) {        *c = 0;        *c &= (&e != 1) / a;      }  }

C54 : Crashes Sun CC 5.11 at -xO0:

#pragma pack(1)  struct {    int f3:1;    int f4:16  }  a = { 1, 0 };

C55 : Crashes Sun CC 5.11 at -xO3:

int a, c;  static int b = 1;  void fn1 ();  void fn2 () {    for (; a; a--) {      c = 0;      for (; c != 1;) {        if (b)          break;        fn1 ();      }    }  }

C56 : Crashes Sun CC 5.11 at -xO4:

#pragma pack(1)  struct S0 {    int f1;    int f3:1  }  a;  void fn1 (struct S0 p1) {    p1.f3 = 0;  }  void fn2 () {    fn1 (a);  }

C57 : Crashes Sun CC 5.11 at -fast:

int a, c, d, e, f, g, h, i, j, k;  volatile int b;  int fn1 () {    for (; d; d = a) {      int *l = &c;      c = -3;      for (; c > -23; --c)        if (k) {          if (*l)            continue;          return b;        }      for (; i; ++i) {        j = 0;        g = h;        for (; f <= 1; f += 1) {        }      }    }    return e;  }

以上就是57个让C编译器崩溃的代码分别是怎样的,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

57个让C编译器崩溃的代码分别是怎样的

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

57个让C编译器崩溃的代码分别是怎样的

本篇文章给大家分享的是有关57个让C编译器崩溃的代码分别是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。我不清楚你是否很高兴看到你的程序会让编译器崩溃的情况,反正我很喜欢
2023-06-17

把python代码编译成exe文件所用到的两个软件分别是什么

本篇文章给大家分享的是有关把python代码编译成exe文件所用到的两个软件分别是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。把python代码编译成exe的相关文件是一
2023-06-17

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录