What if your array is never going to be larger than, say, UINT8_MAX, and you need to pack thousands of these &quot;sizes&quot; into an array of structs? Using an 8-byte size_t in that case will inflate the cache usage significantly.