What about using flexible array member? We've fixed similar issues elsewhere that way. Adding a `C_ASSERT( sizeof(struct memory_view) == offsetof(struct memory_view, name[0]) );` next to the struct definition also makes sure it is correctly alignmed.