Programa crashando ao setar valor em ponteiro

Meu programa crasha toda vez que o loop fica alimentando os valores do vetor position:


void clearPosition(){
	
	for(int i=0;i<4;i++){
		
		for(int j=0;j<qtdJogadores;j++){
			times[i].p[j].position[0] = 0;
			times[i].p[j].position[1] = 0;
	     	printf("Posições resetada");
		}
	}
	
}
typedef struct pilha Pilha;
struct pilha{
	int qtdPilhas;
	int *position;
	int timeCor;	
};

typedef struct time Time;

struct time{
	Pilha *p;
	int pilhasPosicionadas;
};

Já usei malloc para determinar o tamanho dos vetores, o erro ta apenas no vetor position, mas não sei dizer o que tem de errado nele


//Inicializar alocação dinamica nos vetores e matrizes das estruturas Pilha e Time
void determinarPonteiros(){
	
	times = (int *) malloc(4*sizeof(int *)); 
	
	//Atribuindo o vetor para os ponteiros da Pilha
	for(int i=0;i<4;i++){
		times[i].p =  (int *) malloc(qtdJogadores*sizeof(int *));
	}
	
	for(int i=0;i<4;i++){
	
		for(int j=0;j<5;j++){
			//Atribuindo o tamanho das matrizes posição
			times[i].p[j].position = (int *) malloc(2*sizeof(int *));
			
		}
}

}

Tá errado, você está alocando espaço para 4 ponteiros int.
Tem que alocar espaço para 4 estruturas time.