Newsgroup: it.comp.lang.c
Titolo: Aiuto.... malloc 2!!!!!!

Ho modificato il codice..... ma l'errore persiste..... (l'ho compilato
con 3 compilatori differenti.... e su 2 piattaforme.... Linux e
Win2k.... ma non sono riuscito a risolvere nulla!!!!! Aiuto!!!!)
Ri-allego il codice
#include <stdio.h>
#include <stdlib.h>
#include "dizionario.h"
#include <string.h>
/* Strutture dati*/
typedef struct lista{
    int lunghezza;
    char *parola;
    struct lista *next;
}nodo;
typedef nodo* STRUT;
/*Intestazione funzioni */
void carica(char *fname);
void visualizza(void);
void inserisci(char *word);
void elimina(char *word);
void ricerca(char *pattern);
int distanza(char *x, char *y);
/* Funzioni strutture dati */
STRUT creaNodo(void);
STRUT inserisciNodo(char *stringa,int lung, STRUT str);
void eliminaNodo(char *stringa, STRUT str);
STRUT cercaNodo(char *stringa);
void inserisciTab(char *word);
STRUT tab[26];
int main(void){
    char command;
    char str1[40];
    while((scanf("%c",&command))!=-1){
        switch(command){
        case 'c':    scanf("%s",&str1);
                     carica(str1);
                break;
        case 'v':
                break;
        case 'i':   scanf("%s", &str1);
                    inserisci(str1);
                break;
        case 'e':
                break;
        case 'r':
                break;
        case 'd':
                break;
        case 'f': printf("\n");
                return 0;
        }
    }
  return -1;
}
/**************************************************/
/* Funzioni per la gestione delle operazioni base */
/**************************************************/
void carica(char *fname){
    FILE *fp;
    char *strTmp,*strTmp1;
    char token[]=" \n";
    fp=fopen(fname,"r");
    while((getc(fp))!=EOF){
        strTmp=strtok(fp->buffer,token);
                inserisciTab(strTmp);
                while((strTmp1=strtok(NULL,token))!=NULL){
                        inserisciTab(strTmp1);
                }
                break;
    }
}
/*************************************************/
/* Funzioni per la gestione delle strutture dati */
/*************************************************/
void inserisci(char *word){
    inserisciTab(word);
}
STRUT creaNodo(void){
  /*La riga successiva è quella dell'errore*/
  STRUT tmp=malloc(sizeof(nodo));
  tmp->next=NULL;
  return tmp;
}
STRUT inserisciNodo(char *stringa,int lung, STRUT l){
        STRUT cella=creaNodo();
        strcpy(cella->parola,stringa);
        cella->lunghezza=lung;
        cella->next=l;
        return cella;
}
void inserisciTab(char *word){
    char swChar;
    int asciiVal,index,strLen;
    strLen=strlen(word);
    swChar=word[0];
    asciiVal=swChar;
    index=asciiVal-97;
        tab[index]=inserisciNodo(word,strLen,tab[index]);
}

 }
Comunque..... se ti da errore dopo un allocazione che vuol dire?
1) allocazione non riuscita
2) L'hai fatta fuori dal vaso
E visto che il problema te lo da alla seconda allocazione 
probabilmente
nel mentre hai sforato. E infatti occhio alla inserisciNodo seconda 
riga
stai copiando in cella->parola il contenuto di stringa.
Ora se vedi bene la doc. su strcpy ti accorgerai che cella->parola 
deve
puntare ad un buffer sufficente a contenere i caratteri che intendi
copiarci. Ora fai un passo indietro e vai a creaNodo....
Creato il tuo nodo a cosa punta parola? ;)
ohhh...
quindi?
Buon Lavoro!
-- 
Molebio