Hay tal código:matriz de tamaño definido por la variable no constante
#include <iostream>
int main()
{
int size;
std::cin >> size;
size = size + 1;
int tab3[size];
tab3[0] = 5;
std::cout << tab3[0] << " " << sizeof(tab3) << std::endl;
return 0;
}
El resultado es:
$ g++ prog.cpp -o prog -Wall -W
$ ./prog
5
5 24
¿Por qué este código incluso compilar? ¿No debería ser la longitud de la matriz una variable constante?
Utilicé g ++ versión 4.4.5.
+1, aunque no tenía idea de que 'sizeof()' también puede ser no constante. Si alguna vez pensé en usar 'sizeof()' en eso esperaría que fallara por alguna razón. –
@ MichaelKrelin-hacker: de nuevo, como una extensión ... Los VLA requieren un tiempo de ejecución 'sizeof()', por lo que es parte del estándar C99. Simplemente no es un tipo de cosas muy C++. Piensa en 'decltype' y todo esto ... –
Es interesante que no parece existir * ningún * método estandarizado de asignación de memoria en la pila. Podríamos manejar la construcción de objetos con la ubicación-nueva, pero es imposible en C++ obtener una cantidad variable de memoria sin formato en la pila. –