为什么系统调用getpagesize()
会返回int
而不是unsigned int
或size_t
?
下面的原型和简短说明:
GETPAGESIZE(2)
NAME
getpagesize - get memory page size
SYNOPSIS
#include <unistd.h>
int getpagesize(void);
答案 0 :(得分:9)
afterEvaluate { }
可能就足够了。但它不再是一个问题因为
自2001年以来,int
已从POSIX标准中删除,并已被getpagesize()
取代。
您应该使用sysconf()
。
getpagesize()
returning an int was one of the major reasons why it was removed:
getpagesize的
getpagesize()函数返回当前页面大小。它等同于sysconf(_SC_PAGE_SIZE)和sysconf(_SC_PAGESIZE)。 返回int的此接口可能在将来表示适当的值时出现问题。此外,在支持可变大小页面的系统上,未指定此接口的行为。在可变页面大小的系统上,页面可能非常大(理论上,最大内存大小)。这允许对具有共同页面属性的大段内存进行非常有效的地址转换。 有关此问题的说明已添加到“应用程序使用情况”,并且界面标记为“旧版”,并建议应用程序应使用sysconf()接口。
(强调我的)。