Нет, это не гарантировано. Используйте intptr_t
или uintptr_t
, чтобы безопасно хранить указатель в целочисленном размере.
Существуют/были архитектуры, где имеет смысл, чтобы это было ложным, например, сегментированная модель памяти DOS. Там память была структурирована в сегментах 64 тыс. - объект никогда не мог быть больше сегмента, поэтому было бы достаточно 16-бит size_t
. Однако указатель имел части «сегмент» и «смещение», поэтому по определению они должны быть больше 16 бит, чтобы иметь возможность ссылаться на разные сегменты.
Я не понимаю, почему его проголосовали за закрытие. Это законный вопрос. – Nawaz
@ Наваз +1. Я думаю, что с тех пор, как «продемонстрировать минимальные знания» стало закрывающей причиной, некоторые люди считают, что нужно применять его слишком широко. – Angew
'size_t' и' void * '- два нерелевантных типа. Почему они должны быть равны вообще? Я понимаю, что 'size_t' пытается хранить наибольшее число и' void * ', поскольку указатель пытается получить доступ к самому большому адресному пространству. Но он не говорит, что они должны быть равными. – deepmax