Newsgroup: it.comp.lang.c
Titolo: [MALLOC]

Ho un dubbio.
Devo allocare elementi a una lista. Ogni nodo e' semplicemente del
tipo
typedef struct listnode listnode;
struct listnode {
    listnode * prev;
    listnode * next;
    void * datapointer;
};
Dovendo inserire 1000 elementi, mi troverei a dover chiamare 1000
volte la malloc. Ho pensato che potrei ridurre l'overhead di chiamata
allocandone non 1 alla volta ma N (diciamo un 100 alla volta).
Questo implica una leggera complicazione nel codice per l'inserimento
perche' devo controllare se ho ancora nodi nel buffer o se devo
riallocare.
Il problema e': secondo voi e' conveniente allocare subito N nodi
rispetto a chiamare N volte la malloc oppure mi sono fatto una s**a
mentale inutile?
Mox :)

 mentale inutile?
Se sai gia' che i nodi sono N a che ti serve usare 
l'allocazione dinamica ?
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

l'allocazione dinamica ?
Ops, scuste, mi sono distratto ed e' partito un msg errato.
Dicevo, puo' essere che venga chiesto all'utende una volta che e'
partito il programma quanti nodi vuole inserire.
La mia domanda pero' era piu' generica: chiamare N volte la malloc ha
piu' overhead che chiamarla 1 volta sola per N nodi, oppure al suo
interno e' in grado di gestirsi da sola questo caso e allocarsi alla
prima chiamata un po' di spazio, che poi mi cedera' man mano (e quindi
non ha senso che lo reimplementi io)?
Mox :)

 wrotg:


 ha scritto nel messaggio
news:VHU8PBKNgSsdpr...@4ax.com...


non ha senso che lo reimplementi io)?
Una risposta seria sarebbe che il tutto e' dipendente
dall'implementazione.  Nelle specifiche di malloc() non
viene detto nulla riguardo la logica di allocazione, pero' i
comportamenti previdenti, in generale, sono sconosciuti al
C, per sua natura.  Anche perche', in questo caso, si
tratterebbe di capire esattamente che cosa vuole il
programmatore, il che e' impossibile.  Devi gestire a mano
questa situazione.  Che convenga adottare il metodo
dell'allocazione unica, poi, e' un altro discorso: se il
numero di elementi e' relativamente basso, non c'e' un
overhead cosi' oneroso.
-- 
Andrea Laforgia - walkietalkie(at)
libero.it
Spostare "Windows" nel cestino ?

 non ha senso che lo reimplementi io)?
La malloc chiede alla system call deputata all'allocazione della memoria
una determinata quantità di memoria. La quantità di memoria richiesta da
malloc in alcuni sistemi è predeterminata, in altri (glibc), invece, può
essere modificata a run-time.
Hai perdite di prestazione quando le tue chiamate a malloc corrispondono
spesso a chiamate alla system call che alloca fisicamente la memoria.
Un Derfel Sernificato.
-- 
On the subject of C program indentation:
        "In My Egotistical Opinion, most people's C programs should be
        indented six feet downward and covered with dirt."
                -- Blair P. Houghton

 ha scritto nel messaggio
news:Pys8PIp370XFHL...@4ax.com...


Esistono i cancel per cancellare gli articoli su usenet.
Come si fa ???
P.
-- 
   	 ___      ___  __       ___       ___ ___  ___
	/__/ /	 /__/ /   //_/ /__  /__/ /__ /__  /__/
       /__/ /__ /  / /__ // / ___/ /  / /__ /__  /
 
 
http://theunixplace.com/~entropia/index.html
 
Obviously welcome removing Anti-spam filters to contact me in email :-)

 Come si fa ???
Si manda uno speciale articolo per il cancel. Per sapere come farlo fare
al tuo newsreader chiedi su it.comp.software.newsreader.
