stdlib.h и stddef.h заголовочные файлы определяют тип данных, названный size_t, который используется для представления размера объекта. Библиотечные функции, которые берут размеры, ожидают, что они будут иметь тип size_t, и sizeof оператор оценивает к size_t.
фактический тип size_t зависим от платформы; частая ошибка состоит в том, чтобы предположить, что size_t совпадает с неподписанным интервалом, который может привести к программным ошибкам, особенно поскольку 64-разрядная архитектура становится более распространенной.
кроме того, проверьте , Почему size_t имеет значение
size_t является типом, используемым для представления размеров (поскольку его имена подразумевают). Его платформа (и даже потенциально реализация) зависимый, и должна использоваться только с этой целью. Очевидно, представляя размер, size_t не подписан. Много функций stdlib, включая malloc, sizeof и различные функции строковой операции используют size_t в качестве типа данных.
интервал подписывается по умолчанию, и даже при том, что его размер является также иждивенцем платформы, это будут закрепленные 32 бита на самой современной машине (и хотя size_t составляет 64 бита на архитектуре на 64 бита, интервал остаются 32 бита длиной на той архитектуре).
Для суммирования: используйте size_t для представления размера объекта и интервала (или долго) в других случаях.
Это - потому что size_t может быть чем-либо кроме интервала (возможно, структура). Идея состоит в том, что это разъединяется, это - задание от базового типа.