Reserva de Memoria Dinamica Matriz MPI
Publicado por ivan (1 intervención) el 28/03/2011 19:47:14
Hola Buenos días:
Estoy haciendo un programa en MPI donde le a cada proceso hijo le pasa un número de lineas de la matriz1 y toda la matriz2 para que realiace calculo parcial y se lo devuelve al proceso padre. El caso es que cuando voy a reservar memoria para las matrices dicho reserva de memoria tiene que ser en bloque no puede ser puntero de un puntero puesto que si no me da error de segmentación. Yo lo estoy haciendo de la siguiente manera:
int **M1=(int**)malloc(filas1 *sizeof(int*));
for (i=0; i<filas1; i++)
{
M1[i]= (int*)malloc(columnas1 *sizeof(int));
}
Pero me dijeron que de esta manera no vale y lo comprobe yo mismo , ya que da error.
También lo he probrado de la siguiente manera:
M1=(int **)malloc(filas1*sizeof(int *));
M1[0]=(int *)malloc(filas1*columnas1*sizeof(int));
for(i=1; i<filas1; i++)
{
M1[i]=M1[i-1]+columnas1;
}
Pero me da el mismo error. Consulte a un profesor de universiad y me dijo que lo hiciera así:
M1=(int *)malloc(filas1*columnas1*sizeof(int));
Pero de esta forma cuando trato M1 en otras partes del codigo como una matriz M1[filas1][columnas1] ni siquiera compila al no reconocerlo como Matriz. Alguien me podría hechar una mano¿?
Estoy haciendo un programa en MPI donde le a cada proceso hijo le pasa un número de lineas de la matriz1 y toda la matriz2 para que realiace calculo parcial y se lo devuelve al proceso padre. El caso es que cuando voy a reservar memoria para las matrices dicho reserva de memoria tiene que ser en bloque no puede ser puntero de un puntero puesto que si no me da error de segmentación. Yo lo estoy haciendo de la siguiente manera:
int **M1=(int**)malloc(filas1 *sizeof(int*));
for (i=0; i<filas1; i++)
{
M1[i]= (int*)malloc(columnas1 *sizeof(int));
}
Pero me dijeron que de esta manera no vale y lo comprobe yo mismo , ya que da error.
También lo he probrado de la siguiente manera:
M1=(int **)malloc(filas1*sizeof(int *));
M1[0]=(int *)malloc(filas1*columnas1*sizeof(int));
for(i=1; i<filas1; i++)
{
M1[i]=M1[i-1]+columnas1;
}
Pero me da el mismo error. Consulte a un profesor de universiad y me dijo que lo hiciera así:
M1=(int *)malloc(filas1*columnas1*sizeof(int));
Pero de esta forma cuando trato M1 en otras partes del codigo como una matriz M1[filas1][columnas1] ni siquiera compila al no reconocerlo como Matriz. Alguien me podría hechar una mano¿?
Valora esta pregunta
0