システム コールを使用しsbrk
て 1 つのメモリ ページを要求し、そのページを小さなブロックに分割しようとしていますが、私のコードは常に無効なメモリにヒットします。
void sbrkBlocks() {
int *b = sbrk(0);
if(sbrk(sysconf(_SC_PAGESIZE)) == (void *)-1) {
printf("sbrk failed\n");
return NULL;
}
void *bound =b + sysconf(_SC_PAGESIZE);
while (b + 16 <=bound) {
*b = 1;
b+= 16;
}
}
sbrk(0)
に到達した場合のように0x804d000
、バウンド アフターsbrk(one_page_size)
は になります0x8055000
が、コードは でセグメンテーション違反を起こし0x804e000
ます。