私のプログラムはとてもシンプルで、
...
#define TO_INT(a) (*(int *)a)
void *pool_head;
void *pool_tail;
...
pool_head = sbrk(BUF_LENGTH);
if (pool_head == (void *)-1) {
errno = ENOMEM;
return pool_head;
}
pool_tail = sbrk(0);
TO_INT(pool_head) = BUF_LENGTH * -1;
TO_INT((pool_tail - 3)) = BUF_LENGTH * -1;
デバッグすると、次のように表示されます。
Program received signal SIGSEGV, Segmentation fault.
でTO_INT((pool_tail - 3)) = BUF_LENGTH * -1;
pool_tail と pool_head の値:
pool_tail = 0x805a000
pool_head = 0x804a000
それを解決する方法は?ありがとうございました!