int main(void)
{
- size_t block = 0;
- char *b, d = 1;
- for(size_t i = 1 << 31; i >= 1; i /= 2, free(b))
- d = (b = malloc(block += d * i)) == NULL ? -1 : 1;
- printf("One malloc can allocate at most %zu bytes\n", block);
+ size_t s = 0;
+ char *buf, dir = 1;
+ for(size_t i = 1 << 31; i >= 1; i /= 2, free(buf))
+ dir = (buf = malloc(s += dir * i)) == NULL ? -1 : 1;
+ printf("One malloc can allocate at most %zu bytes\n", s);
return 0;
}