#include int *a, *b; int n; #ifdef STACK_SIZE #define BLOCK_SIZE (STACK_SIZE / (sizeof (*a) + sizeof (*b))) #else #define BLOCK_SIZE 32768 #endif foo () { int i; for (i = 0; i < n; i++) a[i] = -1; for (i = 0; i < BLOCK_SIZE - 1; i++) b[i] = -1; } main () { n = BLOCK_SIZE; a = malloc (n * sizeof(*a)); b = malloc (n * sizeof(*b)); *b++ = 0; foo (); if (b[-1]) abort (); exit (0); }