簡體   English   中英

sizeof(size_t)== sizeof(void *)總是如此嗎?

[英]Is sizeof(size_t) == sizeof(void*) always true?

C99 / C ++ 11標准是否保證sizeof(size_t) == sizeof(void*)始終為真?

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

void* f(size_t n)
{
    return (void*)(n); // Is it safe?
}

不,這不能保證。 使用intptr_tuintptr_t將指針安全地存儲在整數中。

有/那些架構是錯誤的,例如分段的DOS內存模型。 那里的內存是64k段結構 - 一個對象永遠不會比一個段大,所以16位size_t就足夠了。 但是,指針具有“段”和“偏移”部分,因此根據定義它必須大於16位才能引用不同的段。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM