[英]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_t
或uintptr_t
將指針安全地存儲在整數中。
有/那些架構是錯誤的,例如分段的DOS內存模型。 那里的內存是64k段結構 - 一個對象永遠不會比一個段大,所以16位size_t
就足夠了。 但是,指針具有“段”和“偏移”部分,因此根據定義它必須大於16位才能引用不同的段。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.