Serendipia++.
Ayer me preguntaron por la creación de arrays en C++ con un número de elementos no conocido en tiempo de compilación.
Mi respuesta no pudo ser otra que la de manual:
Pero luego me aseguraron que si lo hacían así el código les cascaba en algún lugar, no muy bien identificado.
Me comentaron que la solución que habían encontrado finalmente era hacer:
Con mis conocimientos previos de C++ yo pensaba que esto no podía ser, no se podía usar la "fórmula" de creación de un array estático para hacer uno dinámico.
Pero luego, a base de empeñarme, encontré en la red esto, que parece que quiere decir que desde hace algún tiempo los compiladores g++ te posibilitan este truco siempre y cuando seas consciente de que tu array se comporta como una variable local dentro de un ámbito y que cuando el nombre de la variable sale del mismo la memoria es liberada. La reserva de memoria en este caso se hace contra el stack.
Me quedé sorprendido cuando, además, me dijeron que ellos no sabían que esto era una particularidad de g++ (y no sé de cuantos compiladores más).
Habían llegado a formar esta curiosa expresión que les funcionaba por analogía con los arrays de Pascal.
Serendipia++.
Ps.
Y ahora que levante la patita el que ya supiera esto, lo hubiera usado antes o tenga más información acerca de esta construcción, por ejemplo, si se sabe que pertenezca o no al estándar.
Yo de momento, aunque sea elegante y cómodo, y vaya contra el stack no lo utilizaría por motivos de posible no portabilidad.
¿Cuánto código de gnu utilizará esta característica?.


