[Tech] OT - Programmazione C

Franco Bagnoli franco.bagnoli@unifi.it
Sab 21 Feb 2004 21:43:49 CET


On Sat, 21 Feb 2004, Valerio Montagnani wrote:

> > >  if ((buff[10]=(float *)malloc(10)))==NULL) {
> > Qui utilizzi l'11 elemento del vettore, sei gia' in condizione di 
> > segmentation fault, stai scrivendo nella locazione
> > buff+11*sizeof(float*) che *non* ti appartiene.
> > 
> > Il fatto che il tuo programma funzioni e' solo un caso :-)
> > 
> 
> Quindi se volessi controllare se tutto l'array di puntatori sia stato
> ben allocato come dovrei fare?

malloc torna NULL se non puņ allocare la memoria, comunque ci sono le 
pagine man. E non puoi comunque usare gli elementi di un vettore al di 
fuori dei limiti. Questo non vuol dire che devi andare per forza da 0 a 
N-1:

a=malloc(5+sizeof(int))-1;

for (i=1; i<=5; i++) {
 a[i] = ... /* good old FORTRAN style....
}

-- 
Franco Bagnoli (franchino) <franco.bagnoli@unifi.it> (bagnoli@dma.unifi.it)
virtual location: Dipartimento di Energetica "S. Stecco"
ultra-virtual affiliation: Centro Dinamiche Complesse (CSDC-Firenze)
real location: Dip. Matematica Applicata "G. Sansone", Universita' Firenze,
Via S. Marta, 3 I-50139 Firenze, Italy. Tel. +39 0554796422, fax: +39 055471787




Maggiori informazioni sulla lista flug-tech