uintptr_t和size_t是否相同?

Ksh*_*jee 7 c++ types casting std

可能重复:
size_t与intptr_t

我的一些代码处理指针并uintptr_t作为输入,因为它必须使用指针.

我现在必须用整数做同样的事情,所以我想重用那些代码.

是size_t一样的uintptr_t吗?我可以更改实现并使用相同的代码指针和整数只需替换uintptr_t为size_t?

Jam*_*nze 16

size_t必须足够大才能包含最大可能对象的大小. uintptr_t必须足够大才能包含 任何指针.鉴于此,或多或少保证 sizeof(uintptr_t) >= sizeof(size_t)(因为最大可能对象中的所有字节必须是可寻址的),但不是更多.在具有线性寻址的机器上,它们的大小可能相同.另一方面,在分段体系结构中,通常uintptr_t大于size_t,因为对象必须在单个段中,但指针必须能够处理所有内存.