1 #include <limits.h> 2 3 void * a[255]; 4 f(m)5f (m) 6 { 7 int i; 8 int sh = 0x100; 9 i = m; 10 do 11 { 12 a[sh >>= 1] = ((unsigned)i << 3) + (char*)a; 13 i += 4; 14 } 15 while (i < INT_MAX/2 + 1 + 4 * 4); 16 } 17 main()18main () 19 { 20 a[0x10] = 0; 21 a[0x08] = 0; 22 f (INT_MAX/2 + INT_MAX/4 + 2); 23 if (a[0x10] || a[0x08]) 24 abort (); 25 a[0x10] = 0; 26 a[0x08] = 0; 27 f (INT_MAX/2 + 1); 28 if (! a[0x10] || a[0x08]) 29 abort (); 30 exit (0); 31 } 32