YEs, you are right... it is very complex. But it is consistent enought that the compiler can do it all in the background.<p>If you think that it is a <i>bad</i> idea to do:<p><pre><code>   str_t* string = (str_t*)malloc(string_length);
</code></pre>
then half of the goal is been achieved right there.<p>The other half is to have this nailed down in the language definition in sufficient detail so that implementations do not differ widely and you can poke inside it with assembly when you <i>have</i> to.