The use of an array of size [1] at the end of a structure is far broader than users of GCC.  It is not a GCC extension; it&#x27;s a trick which based on undefined behavior: accessing [2], [3], [4] ... in that array based on knowing that the space was malloced, which depends on the pointer arithmetic working, while the optimizer looks the other way.<p>C FAQ: [<a href="http:&#x2F;&#x2F;c-faq.com&#x2F;struct&#x2F;structhack.html" rel="nofollow">http:&#x2F;&#x2F;c-faq.com&#x2F;struct&#x2F;structhack.html</a>]<p>&quot;Despite its popularity, the technique is also somewhat notorious: Dennis Ritchie has called it ``unwarranted chumminess with the C implementation,&#x27;&#x27; and an official interpretation has deemed that it is not strictly conforming with the C Standard, although it does seem to work under all known implementations. (Compilers which check array bounds carefully might issue warnings.)&quot;