Como redefinir variáveis estáticas em uma função

Existe uma maneira de redefinir variáveis declaradas como estáticas em uma função? O objetivo é garantir que a função não seja chamada com valores remanescentes de uma chamada não relacionada. Por exemplo, eu tenho uma função que aparece nas colunas de uma matriz.

int foo(matrix *A, int colnum, int rownum){
static int whichColumn;
static int *v; //vector of length A->nrows 
   if (column != whichColumn){
    memset(v,0,size);
    whichColumn = which;
   } 
   //do other things
}

A função é chamada n vezes, uma vez para cada coluna. Essa é uma maneira adequada de "redefinir" a variável estática? Existem outras maneiras gerais à prova de idiotas de redefinir variáveis estáticas? Por exemplo, quero ter certeza de que, se a chamada for feita com uma nova matriz com dimensões possivelmente diferentes, o vetor v será redimensionado e zerado etc. Parece que a maneira mais fácil pode ser chamar a função com um ponteiro NULL:

int foo(matrix *A, int colnum, int rownum){
static int whichColumn;
static int *v; //vector of length A->nrows 
   if (A == NULL){
    FREE(v);
    whichColumn = 0;
   } 
   //do other things
}

questionAnswers(5)

yourAnswerToTheQuestion