Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    5

    Informazioni sulle allocazioni di memoria in c!!!!!

    Ciao ragazzi sono ancora io...Questa volta volevo delle informazioni sulle allocazioni di memoria.
    Sto realizzando un progetto in c,in cui creo un grafo con liste di adiacenza e ovviamente uso anche delle stringhe di supporto nel main ecc.

    La struttura del grafo è questa:

    codice:
    #define N 80
    
    struct nodo_lista_adiacenti
     {
           int info;
           struct nodo_lista_adiacenti *next;//successivo nodo della lista 
    };
    
     struct vertice
     {
          char info[N];
          char colore[30]; 
          int distanza_precedente;
          int predecessore;
          int tempo_inizio_visita; 
          int tempo_fine_visita;
          struct nodo_lista_adiacenti *punt;
     };
    il grafo lo creo in questo modo:

    codice:
    int main(int argc, char *argv[]) 
    { 
        char stringa1[N], stringa2[N];
         int dim, i; 
         struct nodo_lista_adiacenti *lista= NULL;
        
         struct vertice grafo[N];//lo chiamo grafo
         .......
    
    }
    struct vertice grafo[N];

    Vorrei sapere se devo allocare in memoria tutto quello che uso nel progetto,per esempio le stringhe di supporto iniziali,e anche l'array di vertici cioè il grafo (tutte le liste le alloco già quando le creo quindi va bene...)...Sto iniziando da qualche giorno c quindi sono ancora in confusione con queste allocazioni

    grazie...

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    146
    In generale, sulle allocazioni dinamiche in memoria, considera che al di là delle varie differenze una delle discriminanti principali è il tempo di vita delle variabili . Se allochi nello stack (dichiari localmente) il tempo di vita della variabile dura finchè dura la visibilità della variabile.
    Se allochi dinamico (nel heap ad es con malloc etc. ) il tempo di vita è uguale a quello del programma o finchè non deallochi volontariamente (con free), a quel punto devi solo stare attento a non perderti il puntatore.
    Questo come regola generale sulle allocazioni dinamiche ed è uno dei principali criteri per scegliere se una variabile ti serve allocata dinamica o no. Ripeto : vale in generale, indipendentemente dal grafo che stai facendo

    Spero la spiegazione sintetica sia chiara...

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.