1#include <stdlib.h> 2 3int *a, *b; 4int n; 5 6#ifdef STACK_SIZE 7#define BLOCK_SIZE (STACK_SIZE / (sizeof (*a) + sizeof (*b))) 8#else 9#define BLOCK_SIZE 32768 10#endif 11foo () 12{ 13 int i; 14 for (i = 0; i < n; i++) 15 a[i] = -1; 16 for (i = 0; i < BLOCK_SIZE - 1; i++) 17 b[i] = -1; 18} 19 20main () 21{ 22 n = BLOCK_SIZE; 23 a = malloc (n * sizeof(*a)); 24 b = malloc (n * sizeof(*b)); 25 *b++ = 0; 26 foo (); 27 if (b[-1]) 28 abort (); 29 exit (0); 30} 31