嗯,用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的说法,Windows3.1x是一系列16位操作系统.但我找不到合适的C语言编译器来测试和验证真正的答案。
发布于 2016-04-03 14:17:46
发布于 2016-04-03 21:53:41
这至少可能取决于您正在使用的编译器。
作为16位时代的一个数据点,Borland C++ 3.0手册中有这样的内容:
size_t of 的结果的整数类型是size_t,在stddef.h中定义为无符号int。
(以原文强调)
unsigned int大小为16位,与记忆模型无关。
(您询问的其他类型还没有存在,如果存在,则不受此特定编译器的支持。)
https://stackoverflow.com/questions/36385767
复制相似问题