I see variables defined with this type but I don't know where it comes from, nor what is its purpose. Why not use int or unsigned int? (What about other "similar" types? Void_t, etc).
stddef.hheader files define a datatype called
size_t1 which is used to represent the size of an object. Library functions that take sizes expect them to be of type
size_t, and the sizeof operator evaluates to
The actual type of
size_tis platform-dependent; a common mistake is to assume
size_tis the same as unsigned int, which can lead to programming errors,2 particularly as 64-bit architectures become more prevalent.
From C99 7.17.1/2
The following types and macros are defined in the standard header
which is the unsigned integer type of the result of the sizeof operator
size_t is the unsigned integer type of the result of the sizeof operator (ISO C99 Section 7.17.)
sizeof operator yields the size (in bytes) of its operand, which may be an
expression or the parenthesized name of a type. The size is determined from the type of
the operand. The result is an integer. The value of the result is implementation-deﬁned, and
its type (an unsigned integer type) is
size_t (ISO C99 Section 220.127.116.11.)