Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/01/2010, 08:44
Avatar de delarub
delarub
 
Fecha de Ingreso: mayo-2009
Mensajes: 20
Antigüedad: 15 años, 7 meses
Puntos: 2
[C] Array de 4 dimensiones

Buenas, quiero hacer un array de 4 dimensiones en C, pero una vez inicializado el programa consume 1.4GB de RAM, y no conviene...
Dado que en realidad son caracteres lo que represento, en php lo haria así $stats["$a$b"]["$c$d"];

Necesito tener en el primer indice un string de 2 letras de largo y en el segundo igual. Pero como en C no se puede poner indices como strings, he pensado en hacerlo así:
stats[a][b][c][d]; y claro, el problema está en que tengo que alojar en la memoria para evitar fallos de segmentación.

El codigo de inicialización es el siguiente:
Código C:
Ver original
  1. stats = (int ****)malloc(256 * sizeof(int ***));
  2.     int a, b, c, d;
  3.     for(a = 0; a <256; a++) {
  4.         stats[a] = (int ***)malloc(256 * sizeof(int **));
  5.         for(b = 0; b < 256; b++) {
  6.             stats[a][b] = (int **)malloc(dif * sizeof(int *));
  7.             for (c = 0; c < dif; c++) {
  8.                 stats[a][b][c] = (int *)malloc(dif * sizeof(int));
  9.                 for (d = 0; d < dif; d++) {
  10.                     stats[a][b][c][d] = 0;
  11.                 }
  12.             }
  13.         }
  14.     }

dif en este caso es 74, pero es variable.

256 x 256 x 74 x 74 x 4 (tamaño de un int) = 1.4Gb...

Alguna solución?

Última edición por delarub; 21/01/2010 a las 09:11