iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >57个让C编译器崩溃的代码分别是怎样的
  • 946
分享到

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

2023-06-17 11:06:13 946人浏览 八月长安
摘要

本篇文章给大家分享的是有关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编译器崩溃的代码分别是怎样的,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网精选频道。

--结束END--

本文标题: 57个让C编译器崩溃的代码分别是怎样的

本文链接: https://www.lsjlt.com/news/288416.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • 57个让C编译器崩溃的代码分别是怎样的
    本篇文章给大家分享的是有关57个让C编译器崩溃的代码分别是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。我不清楚你是否很高兴看到你的程序会让编译器崩溃的情况,反正我很喜欢...
    99+
    2023-06-17
  • 把python代码编译成exe文件所用到的两个软件分别是什么
    本篇文章给大家分享的是有关把python代码编译成exe文件所用到的两个软件分别是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。把python代码编译成exe的相关文件是一...
    99+
    2023-06-17
  • 12个有趣的C语言问答分别是怎样的
    本篇文章为大家展示了12个有趣的C语言问答分别是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。0,gets() 方法Q:以下代码有个被隐藏住的问题,你能找到它吗?A:这个不显眼的问题就是使用了...
    99+
    2023-06-17
  • 在C#程序编译另一个程序的实现方法是怎样的
    本篇文章为大家展示了在C#程序编译另一个程序的实现方法是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。C#程序编译编译前,要用到VS2005提供的一个编译工具 devenv.exe,这个在VS...
    99+
    2023-06-18
  • 系统死锁或资源管理器崩溃时让xp系统自动重启的方法是怎样的
    今天就跟大家聊聊有关系统死锁或资源管理器崩溃时让xp系统自动重启的方法是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。虽然微软已经发布xp系统将退出操作的舞台,但还是有一群忠实...
    99+
    2023-06-13
  • 编写cmd界面下一键编译、执行java代码的bat脚本是怎样的
    编写cmd界面下一键编译、执行java代码的bat脚本是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。此脚本适合刚接触java的同学,在cmd界面下用jc...
    99+
    2023-06-02
  • 让Python代码更易维护的七种武器分别是哪些
    这期内容当中小编将会给大家带来有关让Python代码更易维护的七种武器分别是哪些,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。随着软件项目进入“维护模式”,对可读性和编码标准的要求很容易落空(甚至从一开始...
    99+
    2023-06-17
  • C++ 虚拟函数的编译原理:代码是如何转换成机器指令的
    编译过程:预处理:去除注释、宏定义等。词法分析:分解代码为基本单元(标识符、关键字)。语法分析:构建语法树。语义分析:检查语义正确性。中间代码生成:生成平台无关的中间代码。代码生成:生成...
    99+
    2024-04-28
    c++ 编译原理
  • 用Python代码实现5种最好的、简单的数据可视化分别是怎样的
    这篇文章给大家介绍用Python代码实现5种最好的、简单的数据可视化分别是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。数据可视化是数据科学家工作的重要组成部分。在项目的早期阶段,您通常会进行探索性数据分析(ED...
    99+
    2023-06-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作