Visualizzazione dei risultati da 1 a 2 su 2

Visualizzazione discussione

  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2016
    Messaggi
    22

    [C] problema malloc e passaggio di vettori a funzioni

    Ciao, perchè quando provo ad eseguire questo codice il programma crasha?????
    codice:
    #include <stdio.h>
     #include <stdlib.h>
     void funzione(int *vettore);
     int main()
     {
         int *v;
         funzione(v);
         printf("%d", v[0]);
         return 0;
     }
     void funzione(int *vettore)
     {
         int i,n;
         vettore = (int*) malloc(5*sizeof(int));
         for(i=0; i<5; i++)
             {
                 vettore[i]=i;
                 n = vettore[i];
             }
         return;
     }
    Se dichiaro il vettore come
    codice:
    int v[5]
    direttamente nel main e poi lo passo alla funzione tutto fila liscio come l'olio, la funzione fa il suo dovere e quando ritorno nel main ho il vettore modificato.... se invece passo alla funzione solo il puntatore e provo ad allocarlo dinamicamente solo all'interno di essa non ottengo un bel niente!!!

    Se 0x5c era l'indirizzo contenuto nella variabile puntatore int *v, premendo "step into" all'istruzione
    codice:
    funzione(v)
    in modalità debug, nella cella della tabella Waches accanto alla variabile int *vettore c'è scritto 0x5c, cioè significa che il parametro è stato passato correttamente, ed ovviamente se scrivo vettore[0] prima che venga eseguita l'istruzione
    codice:
    vettore = (int*) malloc(5*sizeof(int));
    , accanto e in rosso appare il messaggio "cannot access memory at address 0x5c"....
    la cosa sconvolgente è che, anche dopo che quest'ultima viene eseguita, la scritta da rossa diventa nera ma rimane ugualmente e cosa ancor più sconcertante è che mentre eseguo il ciclo vedo che la variabile n assume esattamente i valori che dovrebbe contenere vettore[i] (per i=0: n=0, i=1: n=1...), ma se provo a scrivere vettore[0], vettore[1], vettore[2] nella Watches non posso vedere una beneamata m... !!!! Ed ovviamente quando ritorno al main se provo ad accedere ad una cella del vettore v ottengo sempre la stessa cosa "cannot access memory at address 0x5c"....

    Questo è il codice
    Ultima modifica di rino95; 29-11-2016 a 02:23

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.