title: Is the offset of a flexible array member subject to change?
body: <p>The standard—§6.7.2.1.18—says that</p>
  
  <blockquote>
    <p>However, when a . (or ->) operator has a left operand that is (a pointer to) a structure with a flexible array member and the right operand names that member, it behaves as if that member were replaced with the longest array (with the same element type) that would not make the structure larger than the object being accessed; the offset of the array shall remain that of the flexible array member, <strong>even if this would differ from that of the replacement array</strong>.</p>
  </blockquote>
  
  <p>The problem is that i don't understand what the standard means by the last statement. Given that we usually set aside enough memory—using malloc()—for a flexible array member <em>along with</em> that of other members, how can it be possible to have non-successive offsets?</p>