Pregunta de C
Diego Caro
diegocaro en gmail.com
Mar Mayo 9 21:43:35 CLT 2006
On 5/9/06, Alvaro Herrera <alvherre en alvh.no-ip.org> wrote:
>
> Tengo una duda. Supongase la funcion siguiente:
>
> void
> pgr_formtuple(Relation foo)
> {
> int natt = foo->natts;
> char arr[natt];
> char nulls[natt];
>
> ...
> }
>
No tengo claro por qué el error, así que obviaré cualquier comentario
con esta forma.
>
> ...
>
> void
> pgr_formtuple(Relation foo)
> {
> int natt = foo->natts;
> char *arr;
> char *nulls;
>
> arr = malloc(natt);
> nulls = malloc(natt);
>
> ...
>
> free(arr);
> free(nulls);
> }
>
>
> Pero me queda la duda si lo de arriba es realmente erroneo.
Según recuerdo de mi curso de C, el malloc necesita un argumento con
el tamaño del tipo de dato.
arr = malloc( sizeof(char) * natt);
Pero como sizeof(char) = 1 (un char se guarda con 1 byte), la función
debería funcionar de lo mejor.
> Por otra
> parte, yo se que lo siguiente si funciona:
>
>
> void
> pgr_formtuple(Relation foo)
> {
> int natt = foo->natts;
>
> {
> char arr[natt];
> char nulls[natt];
>
> ...
> }
> }
>
> Aca la consideracion es que las variables estan creadas en un stack que
> es interior al lugar donde se declara el tamaño que tendran las
> variables. Pero no se si esto realmente influya o sea solamente
> cosmetico.
Yo me quedo con los punteros, se ve más bonitos (cosa de gustos, xD).
> Cualquier comentario es bienvenido.
Ojalá te sirva.
Saludos!
--
diegocaro | http://atenea.inf.udec.cl/~diegocaro/
Más información sobre la lista de distribución Linux