size_t. Базовый беззнаковый целочисленный тип языка Си/Си++. Является типом результата, возвращаемого оператором sizeof. Размер типа выбирается таким образом, чтобы в него можно было записать максимальный размер теоретически возможного массива любого типа. На 32-битной системе size_t будет занимать 32-бита, на 64-битной - 64-бита. Другими словами в тип size_t может быть безопасно помещен указатель (исключение составляют указатели на функции классов, но это особый случай). Тип size_t обычно применяется для счетчиков циклов, индексации массивов, хранения размеров, адресной арифметики. Хотя в size_t можно помещать указатель, для этих целей лучше подходит другой беззнаковый целочисленный тип uintptr_t, само название которого отражает эту возможность. В ряде случаев использование типа size_t безопаснее и эффективнее, чем использование более привычного программисту типа unsigned.
size_t — это базовый беззнаковый целочисленный memsize-тип, определённый в стандартной библиотеке языков C/C++. Данный тип описан в заголовочном файле stddef.h для языка C и в файле cstddef для языка C++. Типы, определяемые заголовочным файлом stddef.h, расположены в глобальном пространстве, cstddef размещает тип size_t в пространстве имён std. В связи с тем, что стандартный заголовочный файл stddef.h языка C для обеспечения совместимости включается в С++ программы, в этих программах возможно обращение к типу как в глобальном пространстве имён (::size_t, size_t), так и в пространстве имён std (std::size_t).
В терминах статического анализатора PVS-Studio тип size_t относится к memsize-типам. Анализатор включает в себя систему Viva64 для детального выявления ошибок в 64-битных программах и для оптимизации кода. И большое количество диагностических сообщений, выдаваемых анализатором Viva64, связанны именно с рекомендацией использования memsize-типов. Использование memsize типов (таких как size_t, ptrdiff_t, INT_PTR) в 64-битных программах, вместо 32-битных типов (int, unsigned) позволяет:
Более подробно об ошибках, которых можно избежать при использовании типа size_t, а также о том, как тип данных позволит улучшить и оптимизировать ваши 64-битные программы, вы можете познакомиться в статьях, приведенных в библиографическом списке.
Если вы планируете заняться разработкой 64-битных проектов или переносом существующих 32-битных проектов на 64-битные системы, то предлагаем приобрести анализатор PVS-Studio, который существенно упростит эту задачу и позволит избежать длительного этапа поиска скрытых ошибок.