| 1 | When we want to be able to hold the size of something: |
| 2 | |
| 3 | * size_t is the type that can accommodate anything we could have in memory, so it’s always big enough. |
| 4 | * As an optimization to our data structures, many should use unsigned instead of size_t, since on 64-bit systems this can make our objects much smaller, and there are many things that simply can’t go past 2^32. |
| 5 | * When we are dealing with the size of a file on disk or something that can be dealt without mapping or loading the whole thing into memory all at once, we want to use a type like "unsigned long long" that can represent sizes larger than 2^32 even on 32-bit systems |