> its like there's some extra data behind the address where the real variable's value starts,
> perhaps the allocated size?
This - a size_t sized 'magic cookie' which holds the number of objects) - is a common implementation technique (typically used when the type has a non-trivial destructor).