Horst von Brand escribió:
> rodrigo ahumada <[EMAIL PROTECTED]> wrote:
> > > int buggy(struct foo *a_foo)
> > > {
> > > int tam = a_foo->bar;
> > > char *valor[tam];
> > > int canario = 0x7e7e7e7e;
> > > int i;
>
> > si gcc crea las variables siguiendo el orden en que se
> > declaran, canario deberia estar por delante de valor:
> >
> > [i][canario][ valor ][tam]...
>
> Crea las variables "hacia abajo" (en el tope) en el stack, cierto.
Trate de ver lo que sucedia si ponia un canario abajo y otro arriba de
la variable, o sea
int canario1 = 0x7e7e7e7e;
char *valor[tam];
int canario2 = 0xe7e7e7e7;
Sin embargo, me lleve una sorpresa porque mostrando las posiciones de
las variables en el stack, canario1 y canario2 aparecen junto con tam e
i, pegadas al principio del stack, mientras que valor aparece mucho mas
abajo! Deduzco que el compilador se toma la libertad de reordenar las
variables como le plazca. Esto es asi tanto con -O0, como -O2 y sin
especificar ninguna.
> > el problema seria que tam fuera tam pero tam grande
> > que al alojar el vector en el stack se alcance a tocar
> > las variables globales... y el problema es que en el
> > codigo en assembly se aloja el vector en el stack asi
> > no mas, sin comprobar cuanto de stack queda... y eso
> > es feo
>
> Para programas a nivel usuario el stack es inmenso de grande, asi que seria
> muy muy raro que ocurriera eso.
Bueno, el programa de ejemplo se cae con SIGSEGV cuando el "tam" es
mayor que algo de 1900000 (casi 2000000 realmente), lo cual por supuesto
es esperable. (Esto en x86-64 eso si).
--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.
From [EMAIL PROTECTED] Thu May 11 11:31:03 2006
From: [EMAIL PROTECTED] (Alejandro Barros)
Date: Thu May 11 10:29:22 2006
Subject: =?utf-8?q?Tama=C3=B1o?= papel
In-Reply-To: <[EMAIL PROTECTED]>
References: <[EMAIL PROTECTED]>
Message-ID: <[EMAIL PROTECTED]>
El Miércoles, 10 de Mayo de 2006 23:18, Horst von Brand escribió:
> pmontecinos <[EMAIL PROTECTED]> wrote:
>
> [...]
>
> > Lo terrible es que en la Universidad tienes que entregar la tesis en
> > oficio, lo que entre otras cosas dificulta la realización de ésta es
> > latex, en A4 quedaría espectacular.
>
> No es /tan/ dificil cambiar el taman~o de papel, incluso definiendo uno
> personalizado...
Pero sería un gran aporte a la estandarización que en la Universidad se
utilice algún de los estándares internacionales (ANSI, DIN, ISO) y no un
tamaño que el único país del mundo que lo usa es Chile
--
Alejandro Barros
e.nable
www.alejandrobarros.cl
"Uno no tiene porque estar de acuerdo con lo que piensa" - Futbolista
Profesional