-1
ページの先頭へのポインタを取得するにはどうすればよいですか?ページの先頭へのポインタを取得する方法
ノー成功に次のことを試してみました:
#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ミスを軽減しようとしています。あらゆる可能な支援が大いにありがたいです。
質問を希望の動作、特定の問題やエラーとするために必要な最短のコードを含める必要があります。質問自体にそれを再現する。明確な問題文がない質問は、他の読者にとって有用ではありません。参照:最小、完全、および検証可能な例を作成する方法。 – Olaf
変数 'buffer'の位置が' buffer'が指すメモリではなく、ページが整列しているかどうかを調べています。 –
スターターの場合:コードが未定義の動作を呼び出します。ポインタに算術演算を行うには、少なくとも正しい整数型を使用します(それでもUBですが、プラットフォーム上で動作する可能性が高い)。 – Olaf