The priority of natural memory usually refers to the alignment of individual variables, and not to arrays of variables. Thus, an array of 4 byte integers (as you are obviously above) is naturally aligned with a 4 byte boundary, not a 16 byte boundary.
The priority of natural memory usually refers to how the instructions for loading / storing the CPU are archived and implemented, rather than the size of the cache lines. The CPU does not load entire arrays at a time (except for vector loads). Thus, the CPU does not really care if the integer that it loads is part of the array or not.
Vector loads that load small arrays at the same time often have more stringent alignment requirements. For example, to perform an x86 vectorial load, the element must be aligned with 16 bytes.
source share