Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 19 su 19
  1. #11
    la risposta sta qui

    "la allocazione della memoria è una responsabilità del programmatore nel linguaggio C"

    Originariamente inviato da misterx
    mi sa che ci stiamo allontanando dal vero problema.
    scrivendo: printf("%d\n",sizeof(G)); mi viene stampato 200 che dovrebbe essere i 50 elementi dichiarati in MAX per 4 byte per struttura.
    ...
    certo, questa è la memoria che hai allocato alla struttura
    Digitando alla richiesta:
    printf("Numero di vertici: ");
    200
    naturalmente perchè nella funzione leggi_grafo gli dici proprio di stampare il valore che gli hai dato in input (anche se sbagliato). Come ti ho detto dovresti inserire nella funzione leggi_grafo una
    assert(n < MAX);
    ciao
    sergio

  2. #12
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da misterx
    Se ad un esame ...
    Quando, in passato, ho fatto delle domande simili ad un mio studente, l'ho fatto incentrando il quesito sulla questione "corruzione dello stack" senza calcolare ne' dimostrare nulla e mi sono ritenuto soddisfatto delle risposte ...

    Altro è dire che lo spazio sullo stack si è esaurito per la causa
    Non si esaurisce lo stack ma si corrompe ... e dal momento in cui si corrompe non puoi calcolare ne' dimostrare nulla ... semplicemente il modo in cui continuera' l'elaborazione e' "impredicibile" e dipende tanto da se e come il compilatore ha organizzato eventuale codice di "recupero" di queste situazioni e dallo "stato" attuale dello stack ...

    Siccome desideravo conoscere il reale motivo del comportamento di quello scorcio di programma
    Perche' parli di "reale motivo"? Ti abbiamo parlato di motivi non reali?

    Il reale motivo e' che lo stack viene corrotto (invece di scrivere sui dati, scrive sugli indirizzi di ritorno ad esempio ...)

    sono sicuro che è calcolabile e dimostrabile
    Non che non lo sia in "assoluto" ma è sicuramente cosi' dipendente da tante cose che in pratica non puoi farlo ...

    se non te la senti di andare a fondo per qualsiasi motivo, semplicemente non interventire
    Non sta qui la questione, non ti offendere, ma stai chiedendo una cosa impossibile a cui rispondere.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #13
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577
    Originariamente inviato da oregon
    Quando, in passato, ho fatto delle domande simili ad un mio studente, l'ho fatto incentrando il quesito sulla questione "corruzione dello stack" senza calcolare ne' dimostrare nulla e mi sono ritenuto soddisfatto delle risposte ...
    i docenti che incontro io non sono così accondiscendenti anzi, scavano a più non posso


    Originariamente inviato da oregon
    Non sta qui la questione, non ti offendere, ma stai chiedendo una cosa impossibile a cui rispondere.
    scusa ma non sono molto convinto, nessuna offesa

  4. #14
    Quando vai a scrivere oltre "G[MAX -1]" il comportamento è indefinito per definizione.
    Non ha senso spiegare cosa accada nell'indefinito. E' indefinito.

  5. #15
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da misterx
    i docenti che incontro io non sono così accondiscendenti anzi, scavano a più non posso
    Se scavano dove non c'e' da scavare, mi viene qualche dubbio, anzi, piu' d'uno ...

    scusa ma non sono molto convinto, nessuna offesa
    Liberissimo ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #16
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    577
    Originariamente inviato da MacApp
    Quando vai a scrivere oltre "G[MAX -1]" il comportamento è indefinito per definizione.
    Non ha senso spiegare cosa accada nell'indefinito. E' indefinito.
    tre contro uno allora la statistica mi è contro
    Potrebbe essere come dite voi che la corruzione dello stack porta ad un risultato "aleatorio" se non si previene l'errore previa codice di controllo e come suggerisce il termine stesso, non è prevedibile.
    Per il momento grazie a tutti

  7. #17
    Originariamente inviato da misterx

    Potrebbe essere come dite voi che la corruzione dello stack porta ad un risultato "aleatorio"
    la specifica del linguaggio C non dà indicazione su come si deve conportare il compilarore in questa situazione.
    Ogni specifico compilatore lo implementa come meglio crede.
    Quindi per un dato compilatore, ma ne devi conoscere il funzionamento, il comportamento è prevedibile, ma questo comportamento non è generale, come ti diceva oregon il compilatore Visula c++ ti dà un segnale di corruzione dello stack, io uso gcc e a meno di non sovrascrivere aree sensibili del programma non ho nemmeno un errore di runtime.
    ciao
    sergio

  8. #18
    Utente di HTML.it L'avatar di preben
    Registrato dal
    Mar 2008
    Messaggi
    78
    Premetto che non conosco in profondità il C.
    Quando si esce dalle zone di memoria allocate il compilatore non segnala un segmention fault?
    Ciao e grazie!

  9. #19
    però, caspita, le risposte leggetele con attenzione

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