Ayuda con codigo

des_trozado
05 de Enero del 2010
El programa es bastante simple solo que estoy aprendiendo a manejar punteros en C y dobles punteros y al compilarlo no da ningun error pero al ejecutarlo a veces va, y a veces falla entonces a ver si algun experto ve algun fallo en el codigo directamente:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

main(){
int** numeros;
int numero,columnas,filas,x,y,ok;

//Reservamos las filas que vamos a rellenar
do{
printf("Cuantas filas vas a rellenar: ");
ok=scanf("%d",&columnas);
while(getchar()!='n');
}while(!ok);
numeros=(int**)malloc(columnas * sizeof(int*));
//Reservamos las filas que vamos a rellenar
//Rellenamos las filas con numeros, cada fila con los numeros que diga que va a poner.
for(x=0;x<columnas;x++){
printf("Cuantos numeros en la fila %d: ",x+1);
scanf("%d",&filas);
getchar();
*(numeros+x)=(int*)malloc(filas+1 * sizeof(int));
for(y=1;y<=filas;y++){
printf("Numero %d: ",y);
scanf("%d",&numero);
*(*(numeros+x)+y)=numero;
}
*(*(numeros+x))=filas;
}
//Rellenamos las filas con numeros, cada fila con los numeros que diga que va a poner.
//Mostramos cada fila con sus respectivos numeros
for(x=0;x<columnas;x++){
printf("nNumeros fila %d: ",x+1);
for(y=1;y<=*(*(numeros+x));y++){
printf("%d ",*(*(numeros+x)+y));
}
printf("n");
}
//Liberamos el malloc
free(numeros);
}

Por cierto si hay algun consejo sobre programacion en general tambien es bienvenido ^^

des_trozado
05 de Enero del 2010
Me autorespondo, supongo que el problema esta en la parte de rellenar las filas o en su defecto al reservar las filas, por que normalmente se peta cuando lo estas rellenando, aunque a veces termina el programa, lo muestra y tambien peta asique... :S no se que estoy haciendo mal.