size_t – это специальный беззнаковый целочисленный тип, определенный в стандартных библиотеках языков С и С++. Является типом результата, возвращаемого оператором sizeof и alignof.
Размер size_t выбирается таким образом, чтобы в него можно было записать максимальный размер теоретически возможного массива или объекта. Другими словами, количество бит в size_t равно количеству бит, которое требуется для хранения максимального адреса в памяти машины. Например, на 32-битной системе size_t будет занимать 32-бита, на 64-битной — 64-бита. В свою очередь это означает, что в тип size_t может быть безопасно помещен указатель (исключение составляют платформы с сегментной адресацией и указатели на функции-члены классов).
Данный тип перекладывает заботу о возможном разном поведении целочисленных переменных при смене платформы с плеч программиста на реализацию стандартной библиотеки. Поэтому использование типа size_t безопаснее и эффективнее, чем использование обычных беззнаковых целочисленных типов:
В языке С тип size_t объявлен в заголовочных файлах <stddef.h>, <stdlib.h>, <string.h>, <wchar.h>, <uchar.h>, <time.h> и <stdio.h>. В языке С++ его декларация находится в файлах <cstddef>, <cstdlib>, <cstring>, <cwchar>, <cuchar>, <ctime> и <cstdio>. Тип size_t размещен в глобальном пространстве имён и в std. Стандартные заголовочные файлы языка C для обеспечения обратной совместимости также могут включаться в С++ программы.
В терминах статического анализатора PVS-Studio тип size_t относится к memsize-типам. В анализаторе существует большое количество специальных 64-битных диагностических правил, выдаваемых анализатором и связанных именно с рекомендацией внедрения memsize-типов. Если вы планируете заняться разработкой кроссплатформенных проектов или переносом существующих 32-битных проектов на 64-битные системы, то вы можете использовать анализатор PVS-Studio, который существенно упростит эту задачу и позволит избежать длительного этапа поиска скрытых ошибок.
Более подробно об ошибках, которых можно избежать при использовании типа size_t, а также о том, как этот тип данных позволит улучшить и оптимизировать ваши программы, вы можете познакомиться в статьях, приведенных в библиографическом списке.
0