Problema com alocação dinâmica

Preciso fazer um código em que o usuário preencha um vetor quantas vezes ele quiser, porém o código para de rodar. Se eu registrar apenas 3 valores, como (1) (2) (3) ele funciona normalmente, mas em alguns momentos (não existe padrão) o programa para de ser executado. Não consegui achar minha falha.

Segue o código:

#include

main(){
int *vetor, i, d, contador=0;
char c;
vetor=NULL;
do{
if(contador==0)
vetor=malloc(1*sizeof(int));
else
realloc(vetor,1*sizeof(int));
printf(“Digite um valor para salvar no vetor: “);
scanf(“%d”, &d);
*(vetor+contador)=d;
contador++;
printf(“Deseja cadastrar mais um numero? “);
scanf(” %c”, &c);
system(“pause”);
} while(c == ‘s’ || c == ‘S’);
system(“cls”);
for(i=0; i