Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    475

    [C] SIGSEV durante realloc()

    Ciao a tutti,

    sto facendo un esercizio per il mio corso di informatica, e mi viene chiesto di riallocare un vettore allocato dinamicamente per aggiungere altri elementi.

    codice:
    typedef struct
    {
        int numero;
        char nome[50];
        int tempo;
    } maratoneta;
    
    int aggiungi(maratoneta m, maratoneta* atleti, int n)
    {
        atleti = realloc(atleti, sizeof(maratoneta) * (n + 1));
        atleti[n] = m;
        return n + 1;
    }
    
    int main()
    {
        maratoneta* atleti;
        int num = 0;
    
        ...
    }
    Queste sono le sezioni del codice "incriminate". La validità dei dati da aggiungere viene controllata in un'altra sezione.

    Il crash si presenta già al primo giro, ovvero quando atleti è ancora NULL e num è ancora 0...

    Il peggio è che questo codice l'avevo già fatto un'altra volta e funzionava, ma ovviamente il codice è su un altro pc a cui non ho accesso
    "Let him who has understanding reckon the number of the beast, for it is a human number.
    Its number is rw-rw-rw-."

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Veramente (da quel che si vede) atleti non è NULL, ma indefinito.
    codice:
    int main()
    {
        maratoneta* atleti;
        int num = 0;
        ...
    }
    Devi azzerarlo esplicitamente.
    codice:
    int main()
    {
        maratoneta* atleti=NULL;
        int num = 0;
        ...
    }
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    475
    Ok, forse dovrei mollare inge... sono troppo stupido per questi corsi xD

    Grazie, risolto... (cioè, questo è risolto, ora ne è comparso un altro, vediamo se capisco almeno questo! xD)

    Ciao!
    "Let him who has understanding reckon the number of the beast, for it is a human number.
    Its number is rw-rw-rw-."

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 © 2026 vBulletin Solutions, Inc. All rights reserved.