Originariamente inviato da LeleFT
Non conosco quella funzione, ma conosco un'altra funzione che ritorna un puntatore a void: malloc().
Cosa significa puntatore a void: significa che ciò che viene restituito è un indirizzo di memoria. Un indirizzo di memoria è un numero e, solitamente, esso va castato al valore corrispondente: se sto allocando memoria per un array di caratteri, allora casto tale valore come puntatore a carattere, ecc.
Il valore -1 è un valore buono come un altro, solo che un indirizzo di memoria non può avere questo valore: esso, quindi, viene utilizzato come errore. Tutto ciò che la funzione restituisce, quindi, è un numero (almeno a mio avviso, non sono andato a vedermi i sorgenti di malloc() ).
Il valore -1 (corrispondente a 0xFFFFFFFF) è una cella di memoria che il sistema operativo automaticamente flagga come non utilizzabile.


Ciao.
Quindi posso assegnare il valore -1 ad un puntatore void? Guarda questo codice (che e' analogo a quello gia' citato):
codice:
void* Funzione(int i)
{
   return -1;
}

int main()
{
   void* p;
   if ((p=Funzione(5))<0)
     printf("Funzione ha riportato un valore negativo...\n");
   else
     {
        printf("Funzione ha riportato un valore non negativo...\n");
     }

   return 0;
}
Eseguendo questo programma, si entra sempre nel ramo else Dov'e' che sbaglio? Devo forse fare return 0xFFFFFFFF?

Gica

Aggiornamento: non va neanche con return 0xFFFFFFFF :master: