我正在尝试使用sbrk
系统调用来请求一个内存页面并将该页面分成小块,但我的代码总是会遇到一些无效内存:
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
.