ARTICLE AD BOX
The total overhead is minimal, probably significantly less than the equivalent Java code. I would ideally create this as a C++ struct with proper constructors and destructors (to include copy, assign, and move). With any modern compiler you're going to then, regardless of whether you're dealing with one instance of this struct or a million, never have more additional code than five functions.
Each individual struct will be a contiguous block of memory, but not necessarily a tightly compacted block of memory: often, access is faster if memory is accessed on word boundaries, so sometimes there's a little padding inserted into the struct in order to ensure each component begins on a word boundary.
Either way, every modern CPU is highly optimized for slamming around contiguous blocks of memory. They have specialized hardware for it, often special Assembly instructions.
Hack away happily. Your approach is entirely sane.
