标准C没有"页面大小"的概念,因此,根据您的标签,没有.可能存在特定于实现的方法 - 您是否特别厌恶使用sysconf
?我假设你提到它,因为它是一种实际获取所需信息的方法,在这种情况下,为什么不使用它?
如果你能#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对你不好?
问候
归档时间: |
|
查看次数: |
4384 次 |
最近记录: |