1

システム コールを使用し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ます。

4

2 に答える 2