Non puoi fare sizeof(vet)/sizeof(double).Originariamente inviato da gulpgiulia
So usando Dev-C++ 4.9.9.2
Ho inizializzato un vettore unidimensionale con un'istruzione malloc. Vorrei verificare che l'operazione di allocazione dinamica sia andata a buon fine. Scrivo il mio codice come segue, utilizzando il suggerimento di Oregon:
La risposta e':codice:int n=10; double *vet; vet = (double*) malloc( n * sizeof(double) ); printf("SIZE: %d\n",sizeof(vet)/sizeof(double));
SIZE: 0
Perche'?
Come posso verificare che l'allocazione dinamica sia corretta?
vet è un puntatore. Se vet è NULL vuol dire che la allocazione è fallita (e nota, devi testarlo!). Altrimenti puoi essere certo che la allocazione ha avuto esito positivo. La dimensione però non puoi saperla tramite vet. vet è solo il puntatore al primo byte del vettore. Devi tenerla/gestirla tu in un'altra variabile ('n' nel tuo esempio).
In generale, non puoi sapere quanto e cosa c'è a partire da un indirizzo contenuto in un puntatore!