size_t is a defined type (through typedef) which is basically an unsigned long int.
Since the idea of a negative value for a size isn't practical sometimes,
it is a type that is used to help find degenerate values during debugging.
Example:
size_t X = 100; printf("X = %u\n", (unsigned long) X);
size_t is defined in various header files such as:
<stddef.h>, <stdio.h>, <stdlib.h>, <string.h>, <time.h>, <wchar.h>