[C con Clase] una duda con malloc
Steven Davidson
srd4121 en njit.edu
Lun Mayo 19 07:48:15 CEST 2008
Hola Luis Carlos,
Luis Carlos Olave Lazo wrote:
> tan solo una consulta basica:
>
> como se utiliza mallocpara asignar espacio a punteros, melo podrian
> explicar detalladamente?
>
Esta función estándar de ANSI C sirve para adjudicar un bloque de
memoria contigua que ocupa una cantidad de bytes indicada por el
parámetro de 'malloc()'. Por ejemplo,
int *pLista = (int *) malloc( 40000 );
Con esto, creamos 40000 bytes. La función 'malloc()' retorna un puntero
al comienzo de este bloque. En nuestro caso, asignamos este puntero a
'pLista', el cual es un puntero a 'int'. Por lo tanto, al usar 'pLista',
realmente estamos manipulando esos 40000 bytes como si fuera un array de
10000 elementos de tipo 'int'; suponiendo que 'int' ocupe 4 bytes. Por
ejemplo,
for( i=0; i<10000; i++ )
scanf( "%d", pLista+i ); /* O si lo prefieres: &pLista[i] */
Cuando ya no necesitemos este bloque de memoria (o array dinámico),
entonces es nuestra responsabilidad desadjudicar (o liberar) la memoria
previamente adjudicada. Esto se hace a través de 'free()'; esto es,
free( pLista );
Para más información acerca de estas dos y otras funciones en
<stdlib.h>, puedes consultar la referencia en nuestra página. Puedes ir
directamente a: http://c.conclase.net/librerias/libreria.php?lib=stdlib
Espero que esto aclare la duda.
Steven
Más información sobre la lista de distribución Cconclase