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).
Следует отметить, что тип size_t не является зарезервированным словом языков C/C++, а объявлен через спецификатор typedef в стандартном заголовочном файле как тип результата, возвращаемого оператором sizeof, и выбирается таким образом, чтобы в него можно было записать максимальный размер теоретически возможного массива любого типа, т.е. на 32-битной системе size_t будет занимать 32 бита, а на 64-битной - 64 бита.