Not forcing you to carry around a size is a feature, not a bug - if you don't need the size, it's just a waste of space.
In C, the size of the array is there even if you can't get at it. On the stack, the compiler needs to know how big an array is to know where to put the next variable; on the heap, the runtime needs to know how big the buffer was returned from malloc so it knows how to delete it. You just don't have access to that number.
"Bond reflected that good Americans were fine people and that most of them seemed to come from Texas." - Ian Fleming, "Casino Royale"