[C con Clase] Matrices dinamicas

Steven Davidson srd4121 en njit.edu
Lun Mayo 11 19:14:47 CEST 2009


Hola Kalith,

kalith kalith wrote:
> Hola..
> 
> Mi duda es la siguiente como puedo crear una matriz dinamica, es decir
> 
> si un arreglo lo creo
> int *pA;
> pA = new int[5]
> 
> como puedo crear una matriz de caracteres donde pueda ir metiendo 
> palabras de forma correcta segun me lo diga un ciclo
> 

Existen dos métodos:

1. Crea un array dinámico de punteros, a modo de filas. Cada puntero 
guardará la dirección de memoria de cada array dinámico, a modo de 
columnas, que vas creando en un bucle. Por ejemplo,

// Tabla de enteros de 10 x 4
int **pTabla = new int*[10];

// Creamos las columnas para cada fila
for( int f=0; f<10; f++ )
   pTabla[f] = new int[4];

Recuerda que debes liberar la memoria tantas veces como la has creado. 
En el caso anterior, esto sería,

// Borramos cada fila
for( int f=0; f<10; f++ )
   delete[] pTabla[f];

// Borramos todas las filas
delete[] pTabla;

2. Creamos un array dinámico de punteros, como un directorio o filas. 
Ahora creamos todos los elementos de la tabla en una sola sentada. 
Luego, vamos guardando el comienzo de cada fila en nuestro directorio. 
Por ejemplo,

// Tabla de enteros de 10 x 4
int **pTabla = new int*[10];

// Creamos todo los elementos: 40
pTabla[0] = new int[10*4];

// Asignamos las filas al "directorio"
for( int f=1; f<10; f++ )
   pTabla[f] = pTabla[f-1]+4;

Este método simplifica la liberación de la memoria. Esto sería,

// Borramos todos los elementos
delete[] pTabla[0];

// Borramos el "directorio"
delete[] pTabla;

> otra cosa cuando debo hacer uso del delete
> 

Cuando ya no necesites esa memoria dinámica. A más tardar, justo antes 
de terminar el programa; o sea, antes de terminar 'main()'.

Sugiero consultar el capítulo 17 de nuestro curso de C++ acerca de este 
tema. Puedes ir directamente a: 
http://c.conclase.net/curso/index.php?cap=017


Espero que esto te ayude.

Steven





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