ragazzi ho un problema con questa funzione...mi da un errore di segmentazione nel main perkè evidentemente non funziona bene il realloc. Inoltre non passa all'esterno l'indirizzo effettivo di B in quanto ha un valore diverso dall'interno all'esterno.
codice:
void no_border (int m, int n, int **A, int **B, int *k)
{
int i,j;
// Allocazione dinamica di COORDINATE (creazione di un vettore bidimensionale di dim iniziale 1x2)
//Alloca le righe
B=(int **)malloc(1*sizeof(int *));
//Verifica allocazione righe
if (B == NULL) {
printf("MATRICE B - Allocazione righe fallita: memoria insufficiente");
exit(1);
}
//Alloca le colonne
for (i=0; i<1; i++){
*(B+i)=(int *)malloc(2*sizeof(int));
//Verifica allocazione colonne
if (*(B+i) == NULL) {
printf("MATRICE B - Allocazione colonne fallita: memoria insufficiente");
exit(1);
}
}
//analizza gli elementi della matrice non di bordo
for (i=1; i<m-1; i++){
for (j=1; j<n-1; j++){
if (*(*(A+i)+j) > *(*(A+i-1)+j)){
if (*(*(A+i)+j) > *(*(A+i)+j+1)){
if (*(*(A+i)+j) > *(*(A+i+1)+j)){
if (*(*(A+i)+j) > *(*(A+i)+j-1)){
//assegnazione degli indici dell'elemento
*(*(B+(*k))+0)=i;
*(*(B+(*k))+1)=j;
//incrementa l'indice-dimensione dell'array B
*k=*k+1;
//rialloca l'array B espandendolo a k righe
B=(int **)realloc(B,*k*sizeof(int*));
//alloca i vettori colonna
*(B+(*k))=(int *)malloc(2*sizeof(int));
/************************************
//inizializzazione k-esima riga creata per il realloc succ
*(B+(*k)) = NULL;
//allocazione delle ripettive colonne (REALLOC=MALLOC)
*(B+(*k))=(int *)realloc(*(B+(*k)),2*sizeof(int));
*************************************/
}
}
}
}
}
}
printf("indirizzo di memoria interno di COORDINATE=%d",B);
}