[C con Clase] Diferencia entre creación variable normal y resevado de espcio con malloc.

David Fire ddfire en gmail.com
Jue Oct 8 20:30:22 CEST 2009


en C no se puede hacer

int arr[i];

pero si se puede con mallcon reservar i*sizeof(int) bytes de memoria y poner
ahi un arreglo, despues de preguntarle al usuario la cantidad de datos.
si el usuario no tiene idea de la cant de datos que va a ingresar tenes que
hacer una lista y ahi si cada nuevo elemento es una nueva llamada a malloc
para alojar ese elemento de la lista.
David

El 8 de octubre de 2009 15:12, Jorge Vega Sanchez
<memmaker650 en gmail.com>escribió:

> No me termina de quedar claro. He visto el ejemplo que ha puesto Samuel
> pero veo alguna contradicción con lo que habeis dicho. El ejemplo lo tengo
> claro, porque pides por pantalla el número de datos a introducir, pero si no
> conocemos el número de datos que se van a introducir. Es decir, el usuario
> va a introducir datos a un array sin saber la cantidad total de datos que va
> a introducir. Luego no entiendo como se definiría esto para un vector. Lo
> del ejemplo se convierte por si sólo en un vector. Es una forma un tanto
> peculiar de definir un vector.
> El 07/10/2009, a las 22:47, David Fire escribió:
>
> aparte de las cosas que dijieron aca
> supon que tienes una estructura de datos muy grande o un arreglo o lo que
> sea muy grande ir pasandolo por valor de un lado a otro seria muy poco
> eficiente si por x motivo no puedes crear esa variable en el main por
> ejemplo no saben que tamaño va a tener y lo creas dentro de una funcion no
> tienes forma de devolverlo si no es por copia (sin usar maloc) y cada vez
> que lo uses y quieras devolver la version modificada tendras que hacerlo por
> copia.
> entonces lo que haces es lo creas en el heap con malloc y pasas solo un
> puntero de un lado a otro.
>
> cuando el programa termina la memoria es liberada.
> David
>
>
>
> El 7 de octubre de 2009 13:11, Jorge Vega Sanchez <memmaker650 en gmail.com>escribió:
>
>> Buenas.
>>
>> Me acaba de surgir una duda que me corroe. No termino de verle uso a la
>> función malloc para reservar espacio de memoria para una varible o struct o
>> lo que sea. Al crear una variable no hacemos lo mismo ??? Si no librermoas
>> este espacio reservado al finalizar nuestro programa lo seguimos teniendo
>> ahí el valor ??
>>
>>
>> Best regards
>> Jorge
>>
>>
>>
>>
>> _______________________________________________
>> Lista de correo Cconclase Cconclase en listas.conclase.net
>> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>>
>
>
>
> --
> (\__/)
> (='.'=)This is Bunny. Copy and paste bunny into your
> (")_(")signature to help him gain world domination.
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
>
>  Best regards
> Jorge
>
>
>
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>



-- 
(\__/)
(='.'=)This is Bunny. Copy and paste bunny into your
(")_(")signature to help him gain world domination.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20091008/569441fa/attachment.html>


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