Is sizeof(size_t) == sizeof(void*) always true?

前端 未结 1 1468
粉色の甜心
粉色の甜心 2021-01-04 01:08

Does the C99/C++11 standard guarantee that sizeof(size_t) == sizeof(void*) is always true?

size_t f(void* p)
{
    return (size_t)(p); // Is it          


        
相关标签:
1条回答
  • 2021-01-04 01:36

    No, that is not guaranteed. Use intptr_t or uintptr_t to safely store a pointer in an integer.

    There are/were architectures where it makes sense for that to be false, such as the segmented DOS memory model. There the memory was structured in 64k segments - an object could never be larger than a segment, so 16-bit size_t would be enough. However, a pointer had "segment" and "offset" parts, so it would by definition have to be larger than 16 bits to be able to refer to different segments.

    0 讨论(0)
提交回复
热议问题