sera a tutti ragazzi, sono ancora inesperto e trovo non poche difficoltà a gestire i puntatori, qualcuno può aiutarmi a capire perchè la stampa del minimo non funziona?

ecco qui il codice
codice:
#include <stdio.h>
#include <malloc.h>
#include <conio.h>
int DIM=1;

void DimVet(int **vet[], int *DIM)
{
        do
        {
                printf("\n\nInserisci la nuova dimensione del vettore(intero positivo): ",*DIM);
                scanf("%d",DIM);
        }while(*DIM<=0);
        *vet = (int *)realloc(*vet, *DIM * sizeof(int));
        printf("\nLa nuova nuova dimensione del vettore e' %d\n", *DIM);
}


   void RandVet(int vet[],int DIM)
    {
        int i,MIN,MAX;
        printf("\nDefinisci l'intervallo di estrazione degli elementi del vettore (min e max) ");
        printf("\nMIN = ");scanf("%d",&MIN);
        do{printf("\nMAX = ");scanf("%d",&MAX);}while(MAX<MIN);
        for(i=0;i<DIM;i++)
        {
            vet[i]=rand()%(MAX-MIN+1)+MIN;
            printf("\nVET[%d]=%d",i,vet[i]);
        }
    }



int PosMin(int vet[],int DIM)
    {
        int i,posmin=0;
        for(i=1;i<DIM;i++)
            if(vet[posmin]>vet[i]) posmin=i;
        return posmin;
    }


void Scelta(int **vet[],int *DIM)
{
DimVet(vet,DIM);
RandVet(*vet,*DIM);
printf("\nIl minimo vale %d ed occupa la posizione %d",vet[PosMin(*vet,*DIM)],PosMin(*vet,*DIM));
}

int main()
    {
        int *vet;
        vet=malloc(sizeof(int) * DIM);
        srand(time(NULL));
        Scelta(&vet,&DIM);
        free(vet);
        vet=NULL;
        return 0;
    }