Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    142

    [C] problema realloc return NULL

    ciao a tutti, ho un problema con il realloc, non capisco xchè a volte mi restituisce null. So che questo succede quando non c'è abbastanza memoria.. ma per un programmino in C stupidissimo e con i pc a nostra disposizione direi che questo è impossibile.

    la funzione incriminata è:

    Codice PHP:
    void InserimentoNodo(GRAFO *GrafoxmlChar NomeNodo[200] )
    {
      
    NODO *New;

        
    // se l'array non è sufficiente, alloca ulteriore spazio
        
    if ( Grafo->NumNodi == Grafo->MaxNodi )
        { 
    Grafo->MaxNodi += LOTTONODI;
          
    Grafo->PrimoNodo = (NODO *) realloc Grafo->PrimoNodo,
                                                
    Grafo->MaxNodi sizeof(NODO) );
              
        }
        if (
    Grafo->PrimoNodo==NULL) {
            
    printf("ERRORE REALLOC");
            
    system("pause");
        }

        New = 
    Grafo->PrimoNodo Grafo->NumNodi// la prima casella libera
        
    strcpy (New->GlossaNomeNodo);
        New->
    Visita =    0;
        New->
    Link   NULL;
        
    Grafo->NumNodi ++ ;

    L'errore non è sempre uguale, l'ho provato su diversi pc.. su uno per esempio fa bene 2 realloc.. e al terzo esce null, su un altro invece si blocca al primo realloc.

    da cosa può dipendere? cosa sbaglio? pls help me, sto sclerando

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,464
    La id con cui controlli il risultato della realloc deve stare all'interno della if in cui viene eseguita la realloc ...

    Se sta fuori, come nel codice che hai scritto, e la prima if non viene eseguita, il controllo non ha senso ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    142
    si ok, ma il controllo l'ho fatto solo x testare, non è quello il problema

    analizzando riga x riga, ho scoperto che il problema è dovuto da:

    Codice PHP:
    strcpy (New->GlossaNomeNodo); 
    se lo commento il realloc funziona perfettamente... altrimenti no, why?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.