comparar dos códigos como sigue:Tener resultado diferente en diferentes versiones de gcc
1 #include <new>
2 #include <cstdio>
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 <new>
2 #include <cstdio>
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 }
La diferencia en la línea 12. En entorno de gcc4.1.2, estos dos códigos obtendrá el mismo resultado 1 2 3 4 Pero en gcc4.4 y gcc4.5, el primer código obtendrá 0 0 0 4
¿Por qué?
Creo que esta es una pregunta relevante para este (especialmente las cotizaciones estándar): http://stackoverflow.com/questions/3931312/value-initialization-and-non-pod-types – Naveen