据我了解, intptr_t 的定义因架构而异——它保证能够表示一个指针,该指针可以访问进程的所有统一地址空间。
Nginx(流行的开源网络服务器)定义了一个用作标志(布尔值)的类型,这是一个 typedef 到intptr_t
. 现在以 x86-64 架构为例——它可以访问涵盖所有大小操作数的大量指令——为什么将标志定义为 intptr_t ?当然,使用 32 位 bool 类型的传统也符合要求吗?
我已经了解了 32 位 Vs。当我还是一名新开发人员时,我自己争论 8 位布尔值,结论是由于处理器设计的复杂性,32 位布尔值在常见情况下表现更好。那么为什么需要转移到 64 位 bools 呢?