eli_hwupgrade
19-11-2009, 15:35
Salve a tutti,
sono nuova del forum, ma spero di poter trovare aiuto su un problema di programmazione in C.
Sto cercando di implementare una struttura dati chiamata Heap Binomiali Rilassati, come estensione degli Heap Binomiali.
Partendo da un'implementazione corretta degli heap binomiali, ho modificato il codice aggiungendone altro per supportare le caratteristiche distintive degli heap binomiali rilassati. Purtroppo però ricevo degli errori nell'esecuzione.
Premetto che lo scopo è testare le prestazioni della struttura dati, eseguendo una sequenza randomica di operazioni di inserimento, rimozione del minimo e diminuzione del valore della chiave.
Il problema fondamentale è che sul Mac nell'IDE Xcode ricevo un errore del tipo tiny_malloc_from_free_list (con già sole 20.000 esecuzioni per ciascun tipo di operazione), mentre facendo girare il tutto dal terminale ricevo una segmentation fault (però quando passo a 100.000).
Utilizzando Ubuntu, la segmentation fault arriva lo stesso però solo su sequenze di operazioni decisamente più lunghe (tipo 500.000).
Sto anche usanto Valgrind per testare i memory leaks e capita una cosa stranissima: su ubuntu le malloc sono in numero pari alle free, sul mac invece risultano sempre 10 malloc in più. Inoltre mi vengono segnalate delle invalid read e write dovute ad accesso a memoria precedentemente liberata...
Io non riesco ad uscirne, c'è qualcuno che può darmi una mano?
Grazie,
Eliana
P.S. allego il codice degli heap Binomiali e degli heap Binomiali Rilassati (in particolare i file heapB.c e HeapBR.c si differenziano e ho inserito la stringa #MODIFIED# nelle parti modificate rispetto alla versione base); il main è più o meno lo stesso e per cambiare il numero di operazioni da eseguire per ciascun tipo basta modificare la costante OP_INSERT.
sono nuova del forum, ma spero di poter trovare aiuto su un problema di programmazione in C.
Sto cercando di implementare una struttura dati chiamata Heap Binomiali Rilassati, come estensione degli Heap Binomiali.
Partendo da un'implementazione corretta degli heap binomiali, ho modificato il codice aggiungendone altro per supportare le caratteristiche distintive degli heap binomiali rilassati. Purtroppo però ricevo degli errori nell'esecuzione.
Premetto che lo scopo è testare le prestazioni della struttura dati, eseguendo una sequenza randomica di operazioni di inserimento, rimozione del minimo e diminuzione del valore della chiave.
Il problema fondamentale è che sul Mac nell'IDE Xcode ricevo un errore del tipo tiny_malloc_from_free_list (con già sole 20.000 esecuzioni per ciascun tipo di operazione), mentre facendo girare il tutto dal terminale ricevo una segmentation fault (però quando passo a 100.000).
Utilizzando Ubuntu, la segmentation fault arriva lo stesso però solo su sequenze di operazioni decisamente più lunghe (tipo 500.000).
Sto anche usanto Valgrind per testare i memory leaks e capita una cosa stranissima: su ubuntu le malloc sono in numero pari alle free, sul mac invece risultano sempre 10 malloc in più. Inoltre mi vengono segnalate delle invalid read e write dovute ad accesso a memoria precedentemente liberata...
Io non riesco ad uscirne, c'è qualcuno che può darmi una mano?
Grazie,
Eliana
P.S. allego il codice degli heap Binomiali e degli heap Binomiali Rilassati (in particolare i file heapB.c e HeapBR.c si differenziano e ho inserito la stringa #MODIFIED# nelle parti modificate rispetto alla versione base); il main è più o meno lo stesso e per cambiare il numero di operazioni da eseguire per ciascun tipo basta modificare la costante OP_INSERT.