Oh no. What Ritchie described *was* unwarranted chumminess with the implementation, because you're declaring a short array then allocating more space and walking off the end of it. That *is* forbidden by the Standard. But allocating enough space for one structure appended to the end of another one, then doing pointer addition and a typecast? That's allowed: you're not accessing off the end of one object at all, you're accessing the object you cast to.