Have different result at different versions of gcc
<p>Compare two codes as follow:</p>

<pre><code>  1 #include &lt;new&gt;
  2 #include &lt;cstdio&gt;
  3 class CA
  4 {
  5 public:
  6     int i, j, k;
  7 };  
  8 
  9 int main()
 10 {
 11     int aa[4] = { 1, 2, 3, 4 };
 12     CA *i = new(aa) CA();
 13     printf("%d %d %d %d\n", aa[0], aa[1], aa[2], aa[3]);
 14     return 0;
 15 }   

  1 #include &lt;new&gt;
  2 #include &lt;cstdio&gt;
  3 class CA
  4 {
  5 public:
  6     int i, j, k;
  7 };  
  8 
  9 int main()
 10 {
 11     int aa[4] = { 1, 2, 3, 4 };
 12     CA *i = new(aa) CA;
 13     printf("%d %d %d %d\n", aa[0], aa[1], aa[2], aa[3]);
 14     return 0;
 15 }   
</code></pre>

<p>The difference at line 12.  At environment of gcc4.1.2, these two codes will get the same result 1 2 3 4
But at gcc4.4 and gcc4.5, the first code will get 0 0 0 4</p>

<p>Why ?</p>
