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
}