Newsgroup: it.comp.lang.c
Titolo: Allocazione dinamica

Ipotizzando di dover allocare n elementi (di una struttura) dinamicamente,
ho qualche vantaggio prestazionale (ovviamente minimo ...) utilizzando una
volta la calloc invece che n volte la malloc ?
Grazie per l'attenzione
dnt
--
____________________________________________________
________________________________________________
Visita il mio sito: 
http://members.xoom.it/DanxVB

volta la calloc invece che n volte la malloc ?
beh, si. ma nessuno ti vieta di fare una sola malloc.
Oha
-- 
"Qualcuno mi spieghi perche' 144 e' l'unico
quadrato perfetto della serie di Fibonacci"

Con una sola malloc puoi allocare spazio per tutti gli elementi:
p=malloc(n_elementi * sizeof(tipo));
--
Marco Iannaccone
marc...@tin.it
Nick: Tolkien
ICQ UIN: 18748121
"Questa è una nave moderna, ma ha un nome antico e glorioso...
Trattala come una signora e ti riporterà sempre a casa"
FAQ di it.comp.lang.c:
http://www.programmazione.it/linguaggi/c/itcomplangc.htm

p=malloc(n_elementi * sizeof(tipo));
Mi sa che ti sei scordato il cast
Augusto Pucci
Webmaster di Prospektiva On-line
http://go.to/Prospektiva

 Mi sa che ti sei scordato il cast
Il cast in questo caso non è necessario. La conversione da void * è
automatica.
EMG

volta la calloc invece che n volte la malloc ?
Direi di si', ammesso che tu lo possa fare. Meno chiamate fai al sistema
operativo, meglio e'.
Saluti,
    Mardy

1) il tipo restituito da malloc è void, che può essere convertito in
qualsiasi altro puntatore automaticamente.
2) in genere, per chiarezza, faccio sempre il cast, ma qui, essendo
l'esempio generale, non avevo specificato neanchhe il tipo di dati a cui
puntava p. Il cast a chi lo facevo?!


va considerato che ogni chiamata a funzione ( a meno che non sia
implementata come macro, o ci siano ottimizzazioni particolari...) prevede
una copia di dati nello stack(come minimo l'indirizzo di ritorno), quindi
meno se ne fanno, meglio è...


 1) il tipo restituito da malloc è void,
void *
EMG

Trattala come una signora e ti riporterà sempre a casa"
Scusa l'OT, ma da che film o libro e' tratto il tuo sign ?


 implementata come macro, .....
Le funzioni non sono implementate come macro;Le macro sono macro,le funzioni
sono funzioni....
Ivan Molella

...

Si', ma non sempre il programmatore se ne accorge: in <windows.h>, per
esempio, puo' capitare che siano definite delle macro che il programmatore
poco curioso scambia (e come dargli torto?) per funzioni.
Saluti,
    Mardy

La prima puntata di Star Trek: The Next Generation...
--
Marco Iannaccone
marc...@tin.it
Nick: Tolkien
ICQ UIN: 18748121
"Questa è una nave moderna, ma ha un nome antico e glorioso...
Trattala come una signora e ti riporterà sempre a casa"
FAQ di it.comp.lang.c:
http://www.programmazione.it/linguaggi/c/itcomplangc.htm

Si, nella fretta ho dimenticato il *, ma dal contesto si capiva...


E' infatti quello che intendevo io...


 poco curioso scambia (e come dargli torto?) per funzioni.
Se e' per questo no solo in windows.h accade, comunque resta il fatto che e'
errato gestire nel programma le macro come se fossero vere e propie funzioni
visto che in determinati casi i comportamenti possono essere molto diversi.
Ivan Molella