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:
codice:
int n=10;
double *vet;
vet = (double*) malloc( n * sizeof(double) );
printf("SIZE: %d\n",sizeof(vet)/sizeof(double));
La risposta e':
SIZE: 0

Perche'?
Come posso verificare che l'allocazione dinamica sia corretta?
Non puoi fare sizeof(vet)/sizeof(double).
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!