[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