嗯,C 编程语言中定义的 size_t
、uintptr_t
、intptr_t
和 ptrdiff_t
类型确实让我困惑。
我注意到,在使用平面内存模式的32位系统上,上述四种类型的实际大小是:
sizeof(size_t) = sizeof(uintptr_t) = sizeof(intptr_t) = sizeof(ptrdiff_t) = 4
在使用平面内存模式的64位系统上,以上四种类型的实际大小为:
sizeof(size_t) = sizeof(uintptr_t) = sizeof(intptr_t) = sizeof(ptrdiff_t) = 8
但是,我仍然对使用分段寻址模式的16位系统上这四种类型的实际大小感到好奇。
根据Windows 3.1x ,Windows 3.1x是一系列16位操作系统。但我找不到合适的C语言编译器来测试和验证真正的答案。
最佳答案
在 real mode 、size_t
和 ptrdiff_t
是 16 位类型。指针的大小取决于它是否是 near, far, or huge指针。近指针有 16 位,其他 32 位。 intptr_t
和 uintptr_t
是很晚才在 C99 中定义的。
关于c++ - 使用分段寻址模式的 16 位系统上 `size_t` 、 `uintptr_t` 、 `intptr_t` 和 `ptrdiff_t` 类型的实际大小是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36385767/