size_t is unsigned - most people use int for a loop var so there is a possibility that it could wrap around to a negative number.
Edit: and this
"The size_t type is the unsigned integer type that is the result of the sizeof operator (and the offsetof operator), so it is guaranteed to be big enough to contain the size of the biggest object your system can handle (e.g., a static array of 8Gb)."
John