Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    10

    [C] Sulla realloc (invalid next size)

    Dunque... Inizio col codice, semplice semplice e ridotto all'osso (al punto dove crasha ovviamente :D)

    int main(int argc, char *argv[]){

    int* prova = malloc (sizeof(int));
    int provaIndex;
    for (provaIndex = 0; provaIndex < 10; provaIndex++){
    prova[provaIndex] = 1;
    prova = realloc(prova, (provaIndex + 1) * sizeof(int));
    }
    }

    So che la realloc andrebbe usata con un temp (ma il punto non è quello, crasha lo stesso e per semplicità l'ho assegnata direttamente a "prova").
    Ovviamente potrei passare alla malloc iniziale "10 * sizeof(int)" al posto di "sizeof(int)" ma io ho bisogno di capire perchè la realloc mi dà questo errore (nel mio codice non so quanti elementi dovrò inserire)

    Le cose che più mi inquietano sono 2:
    1) Crasha all'ottava iterazione O_O
    2) Lo stesso codice senza "prova[provaIndex] = 1;" non crasha:

    int main(int argc, char *argv[]){

    int* prova = malloc (sizeof(int));
    int provaIndex;
    for (provaIndex = 0; provaIndex < 10; provaIndex++){
    //prova[provaIndex] = 1;
    prova = realloc(prova, (provaIndex + 1) * sizeof(int));
    }
    }

    Come mai??
    Grazie delle risposte

  2. #2

    Re: [C] Sulla realloc (invalid next size)

    fai così:
    codice:
    if (provaIndex + 1 < 10){
    	prova = realloc(prova, (provaIndex + 2) * sizeof(int));
    }

  3. #3

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2011
    Messaggi
    10
    Hai ragione, me l'avevano già fatto notare... alla fine ho risolto grazie (sono un pollo : D)

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.