c++ - 使用分段寻址模式的 16 位系统上 `size_t` 、 `uintptr_t` 、 `intptr_t` 和 `ptrdiff_t` 类型的实际大小是多少?

标签 c++ c windows

嗯,C 编程语言中定义的 size_tuintptr_tintptr_tptrdiff_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 modesize_tptrdiff_t 是 16 位类型。指针的大小取决于它是否是 near, far, or huge指针。近指针有 16 位,其他 32 位。 intptr_tuintptr_t 是很晚才在 C99 中定义的。

关于c++ - 使用分段寻址模式的 16 位系统上 `size_t` 、 `uintptr_t` 、 `intptr_t` 和 `ptrdiff_t` 类型的实际大小是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36385767/

相关文章:

java - 如何将信息从 java 发送到 windows 任务栏到 javafx

c - 制作跨所有用户的单例应用程序

c++ - SDL2 内存泄漏 C++

c++ - 在 FreeBSD 中编译 C++/OpenGL

编译器错误 - 在 C 编程中取消引用指向不完整类型的指针

c - 如何处理 send() 中缓冲区长度输入和返回值大小不匹配?

c++ - OpenCV 中的 findContour 可以像 Matlab 中的 bwlabel 一样工作吗?

c++ - 通过引用和指针传递参数

c - 如何仅使用指针和指针算术删除 c 中所有出现的字母。

c++ - 编译现有的 C++ 代码以在 DOS 中运行