gpt4 book ai didi

c - 如何获得指向页面开头的指针

转载 作者:行者123 更新时间:2023-11-30 19:37:32 25 4
gpt4 key购买 nike

如何获得指向页面开头的指针?

我尝试了以下方法但没有成功:

#define PAGESIZE 4096

bool is_page_aligned(void *p)
{
return !((long int)p & 0xFFF);
}

int main(void)
{
bool res;
void *buffer;

buffer = malloc(PAGESIZE*2);
printf("%p\n", (void *) &buffer);
res = is_page_aligned(&buffer);
fputs(res ? "true\n" : "false\n", stdout);
return 0;
}

我正在努力减少 TLB 失误。非常感谢任何可能的帮助。

最佳答案

要获取包含地址 a 的页面开头的地址,请除以页面大小,然后乘以页面大小。

long int page_beginning = PAGESIZE * (a / PAGESIZE);

这之所以有效,是因为在整数除法期间执行了截断。

您还可以减去模数:

long int page_beginning = a - (a % PAGESIZE);

关于c - 如何获得指向页面开头的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39731390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com