Pagina 1 di 5 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 43
  1. #1

    crash usando malloc/realloc

    hey ragazzi perchè se faccio così:

    char *testo;
    unsigned long i=0;


    char vettore1[]= "vettore1";

    printf("\n\ninserisci testo");

    if( ! (testo = (char*) malloc(sizeof(char))) )
    {
    printf("\aImpossibile allocare la memoria\n");
    return -1;
    }

    while(1)
    {
    testo[i]=getchar();
    if(testo[i]=='\n') break;

    i++;
    if( ! (testo = (char*) realloc(testo, i+1)) )
    {
    printf("\aimpossibile allocare altra memoria\n");
    return -1;
    }
    }
    testo[i]='\0';

    printf("la stringa inserita e':\n%s\nsono stati allocati %d byte\n", testo, ++i);

    FILE *fi;

    if((fi = fopen("dat.dat","w")) == NULL)

    printf("Errore nell'apertura del file\n");

    else

    fputs(strcat( vettore1, testo),fi);


    se immetto una stringa contenuta tutto va bene ed i dati vengono salvati nel DB, invece se ne metto una un pò più lunga mi si crasha tutto ?

    forse per colpa della funzione strcat che ho usato ?

    xchè mi sembra che la malloc funzioni bene...
    http://www.mangaitalia.net/

    questo è un cazzo metallizzato a quattro ruote e noi due siamo i coglioni che se lo portano dietro - da Bad Boys con Will Smith and Martin Lawrance di John Whoo

  2. #2

    codice:
    fputs(    strcat( vettore1, testo)     ,fi);
    come fai a concatenare a vettore1 una stringa se la dimensione di vettore1 e fissa a 8 char più il NULL?? :master:

    Il programma ti va in overflow e guarda che non è una cosa da poco un overflow!
    Ti manda in crash il sistema ma in occasioni diverse può avere effetti collaterali altrettanto disastrosi!!!!!
    :bubu:

    Hasta la vista!!


  3. #3

    Re: crash usando malloc/realloc

    Originariamente inviato da rocco.g
    se immetto una stringa contenuta tutto va bene ed i dati vengono salvati nel DB, invece se ne metto una un pò più lunga mi si crasha tutto ?
    cioè intendi che invece di fare
    codice:
     char vettore1[]= "vettore1";
    fai :
    codice:
    char vettore[100];
    gets(vettore);
    ???
    quanto + lunga intendi??

    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  4. #4
    Originariamente inviato da SnakePlissken

    Il programma ti va in overflow e guarda che non è una cosa da poco un overflow!
    Ti manda in crash il sistema ma in occasioni diverse può avere effetti collaterali altrettanto disastrosi!!!!!
    :bubu:

    Hasta la vista!!

    :gren:
    sisi cmq

    :gren:
    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  5. #5
    quindi cosa devo fare per concatenare le due stringhe ?

    p.s. so cosa è un overflow... :-)
    http://www.mangaitalia.net/

    questo è un cazzo metallizzato a quattro ruote e noi due siamo i coglioni che se lo portano dietro - da Bad Boys con Will Smith and Martin Lawrance di John Whoo

  6. #6
    cmq forse non mi sono spiegato io...

    come fai a concatenare a vettore1 una stringa se la dimensione di vettore1 e fissa a 8 char più il NULL??
    la stringa vettore1 ha 8 caratteri + il carattere \0 è tale deve rimanere, quella dovrebbe essere sempre la stessa, quella che cambia ogni volta è la stringa testo che uso insieme alla malloc per allocarla dinamincamente, solo che poi quando la accoda a vettore1 e vado a salvarla, se la scrivo molto lunga, mi si crasha...


    si mantiene stabile al max con 300 / 400 caratteri...
    http://www.mangaitalia.net/

    questo è un cazzo metallizzato a quattro ruote e noi due siamo i coglioni che se lo portano dietro - da Bad Boys con Will Smith and Martin Lawrance di John Whoo

  7. #7
    Originariamente inviato da rocco.g
    si mantiene stabile al max con 300 / 400 caratteri...
    ma l'errore è relativo quando metti nel file la concatenazione tra vettore1 e la stringa immessa dall'utente??quindi qua:
    codice:
     fputs(strcat( vettore1, testo),fi);
    ??
    se la stampi semplicemente crasha ugualmente??
    altra cosa inbserisci + di 400caratteri scrivendoli??

    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  8. #8
    mm vediamo allora...

    il programma si compila normalmente, senza errori e warning...

    il programma praticamente prende in input la stringa costante vettore1 e richiede poi all'utente di inserirne una a piacimento. Una volta inserita si preme invio ed il programma accoda alla stringa vettore1 la seconda stringa "testo" inserita dall'utente salvandola in un file.

    Ora se si immette come seconda stringa una frase non molto lunga, diciamo di max 100byte, il prog funziona bene, si preme invio e viene salvato tutto quanto nel file... se invece la frase supera i 100byte premendo invio il programma si crasha...


    EDIT : ho provato adesso a stamparla a video soltanto e mi si crasha lo stesso superando a 100byte...
    http://www.mangaitalia.net/

    questo è un cazzo metallizzato a quattro ruote e noi due siamo i coglioni che se lo portano dietro - da Bad Boys con Will Smith and Martin Lawrance di John Whoo

  9. #9
    Originariamente inviato da rocco.g
    mm vediamo allora...

    il programma si compila normalmente, senza errori e warning...

    il programma praticamente prende in input la stringa costante vettore1 e richiede poi all'utente di inserirne una a piacimento. Una volta inserita si preme invio ed il programma accoda alla stringa vettore1 la seconda stringa "testo" inserita dall'utente salvandola in un file.

    Ora se si immette come seconda stringa una frase non molto lunga, diciamo di max 100byte, il prog funziona bene, si preme invio e viene salvato tutto quanto nel file... se invece la frase supera i 100byte premendo invio il programma si crasha...


    EDIT : ho provato adesso a stamparla a video soltanto e mi si crasha lo stesso superando a 100byte...
    sisi avevo visto come funziona il programma eheh :gren:

    adesso lo sto vedendo appena fatto te lo posto



    ps l'edit che hai aggiunto in risposta alla mia domanda è importante..abbiamo capito che è un problema di "memoria" e non del fatto della scrittura del file(come diceva prima SnakePlissken )
    Vediamo..sogni che diventano professione...passioni che diventano vita... Free as in Freedom...

  10. #10
    grazie Andrea !


    in effetti pensavo fosse un problema della stampa sul file... invece come dici tu è di memoria... perchè se no non si crasherebbe...

    hai avuto una buona idea andrea a proporre di usare la printf :-)
    http://www.mangaitalia.net/

    questo è un cazzo metallizzato a quattro ruote e noi due siamo i coglioni che se lo portano dietro - da Bad Boys con Will Smith and Martin Lawrance di John Whoo

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.