[C con Clase] Vocal o Consonante

Programante programante en gmail.com
Sab Jul 25 15:57:47 CEST 2009


Steven Davidson escribió:
> Hola David,
>
> 2009/7/16 David fire
>
>
>           Steven, pregunta por que lo ignoro...
>
>     siempre se puede afirmar lo que explicas de que el indice 3 de
>     letra es el primer byte de largo? esto es para toda arquitectura
>     (big endian, litle endian, arm, y cualquier otra cosa que corra c)?
>     me refiero a que las variables son alojadas en memoria en el mismo
>     orden que son creadas y una a continuacion de la otra...
>
Según tengo entendido, la posición en que lo asigne dependerá del
compilador (incluyendo la versión) y de las optimizaciones que estén
activas.
Por ejemplo podría ser que largo estuviera almacenado únicamente en un
registro. O también, las versiones modernas de Visual C++ reordenan de
forma explícita los arrays de caracteres para hacer más difíciles los
buffer overflow.

> He intentado cerciorarme acerca de lo que dije para este tema.
> Stroustrup, en su libro "El Lenguaje de Programación C++", menciona
> que la construcción de las variables locales (10.4.4) como las no
> locales (10.4.9) se hace en orden de aparición de sus definiciones, y
> su destrucción se hace en el orden inverso de construcción. Para las
> variables no locales, no se garantiza el orden de construcción si
> existen en diferentes unidades de traducción.
Creo que Stroustroup se refiere únicamente al orden de inicialización de
los objetos (de llamada a los constructores), sin que tenga que ver
dónde están realmente en memoria.





Más información sobre la lista de distribución Cconclase