[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