Swift’s MemoryLayout: size and stride
This might surprise you: the size of some types can be zero but the stride will always be at least 1 byte. Having types take up at least 1 byte means you don't need a bunch of special casing everywhere you deal with memory to avoid calling
malloc(0)
. This does mean an array of 100 zero size types allocates 100 bytes that are never read or written.