如何使用C程序和malloc找出处理器的页面大小?

cfo*_*fun 2 c size malloc processor

是否可以使用C程序和malloc找出处理器的页面大小?而不是通过使用sysconf()调用?

pax*_*blo 5

标准C没有"页面大小"的概念,因此,根据您的标签,没有.可能存在特定于实现的方法 - 您是否特别厌恶使用sysconf?我假设你提到它,因为它是一种实际获取所需信息的方法,在这种情况下,为什么不使用它?


Giu*_*ini 5

如果你能#include一些linux内核头文件,你可以找到宏PAGE_SIZE

<asm/page.h>
Run Code Online (Sandbox Code Playgroud)

在cygwin(也许是windows'ddk)我进来了

<w32api/ddk/winddk.h>
Run Code Online (Sandbox Code Playgroud)

在运行时计算页面大小有"肮脏的技巧"(非常非常脏!).所有都是不可移植的,完全依赖于系统.

让我们玩得开心!

may系统上的一个可能技巧是创建一个只有1个字节长的共享内存对象.系统调用通常将大小舍入到系统页面大小.漂白!

另外一个,如果你在类似unix的系统上运行并且你敢于拦截SIGSEGV信号,你可以尝试通过查找有效区域来探索内存,并查看它们被舍入的2的幂.呃... ...

那么,为什么sysctl对你不好?

问候