Gracias por responderme,
He probado con lo que me has dicho pero sigo teniendo errores al ejecutar el programa. El problema creo que se localiza aqui:
long int pot=(long int)pow(2,(double)k);
buffer=(int *)malloc((int)pot*n*sizeof(int));
if ((buffer==NULL)) //si no hay memoria libre devuelve NULL
{
printf ("nNo hay memoria buffer");
exit(1);
}
Lo que sucede es que cuando le meto como parámetro un valor de K=[1 22] el programa hace su funcion, cuando K=[23 29] el programa no es capaz de reservar la memoria que se le debería asignar a
buffer, pero en teoria el funcionamiento sería correcto. El fallo viene cuando K>30 que en teoria si para K mallores que 23 no fue capaz de resevar memoria, para k>30 tampoco deberia de ser capaz y el programa deberia de finalizarse (ejecutandose el if), pero por el contrario lo que me muestra es un error de segmentacion. Es como si se saltase la condicion.
¿Hay alguna manera de conocer el tamaño máximo de memoria que se pueda reservar en un determinado ordenador y tiene sentido que no sea capaz de reservarme memoria de un cierto tamaño y si lo sea para un tamaño mallor?
Saludos y gracias!!
}