(original) (raw)

#include #include #include #include int main() { intptr_t oldendds; intptr_t newendds; int increase = 200; int nothing = 0; int *pin = &increase; int returnvalue; extern int etext, edata, end; printf("etext = %x (%u)\n", &etext, &etext); printf("edata = %x (%u)\n", &edata, &edata); printf("end = %x (%u)\n", &end, &end); oldendds = (intptr_t) sbrk(increase); printf("oldendds = %x (%u)\n", oldendds, oldendds); newendds = (intptr_t) sbrk(nothing); printf("after increasing 200, newendds = %x (%u)\n", newendds, newendds); printf("newendds + 16 = %x (%u)\n", newendds + 16, newendds + 16); returnvalue = brk((void *)(newendds + 16)); printf("returnvalue should be 0; it is %d\n", returnvalue); newendds = (intptr_t) sbrk(nothing); printf("after adding 16, newendds = %x (%u)\n", newendds, newendds); return 0; }