Visualizzazione dei risultati da 1 a 2 su 2

Discussione: realloc in C

  1. #1

    realloc in C

    ciao a tutti , ho un piccolo problema riguardante i grafi. a partire da questa procedura di creazione del grafo ne ho scriito una per aggiungere un nodo al grafo esistente. il programma va in crash sulla linea in cui rialloco con realloc la memoria per il grafo ingrandendola per il nodo aggiuntivo. Grazie a chi risponderà.

    Graph graph_create(int n)
    {
    Graph g;
    int i;

    g = malloc(sizeof(struct graph) + sizeof(struct successors *) * (n-1));
    assert(g);

    g->n = n;
    g->m = 0;

    for(i = 0; i < n; i++) {
    g->alist[i] = malloc(sizeof(struct successors));
    assert(g->alist[i]);

    g->alist[i]->d = 0;
    g->alist[i]->len = 1;
    g->alist[i]->is_sorted= 1;
    }

    return g;
    }



    void add_vertex(Graph g)
    {
    Graph tmp = realloc(g, sizeof(struct successors *));
    if (tmp != NULL)
    {
    g = tmp; /* OK, nuovo assegnamento, più grande di p */

    assert(g);

    int numVert = graph_vertex_count(g)+1;

    g->n = numVert;

    g->alist[numVert-1] = malloc(sizeof(struct successors));
    assert(g->alist[numVert-1]);

    g->alist[numVert-1]->d = 0;
    g->alist[numVert-1]->len = 1;
    g->alist[numVert-1]->is_sorted= 1;

    }

    else

    {

    printf("errore");
    }
    }

  2. #2
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Magari a realloc serve la nuova dimensione totale xD, comunque non ho molto capito il codice...
    Potresti postare le strutture?

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.