Errore realloc() di una string in C

di il
7 risposte

Errore realloc() di una string in C

Salve e grazie anticiapatamente,

sto studiando in C, e mi sono scontrato con il problema che cercherò di spiegare in seguito ... La compilazione della seguente funzione non restituisce errori, ma in esecuzione ho un errore. Le due stringhe vengono memorizzate correttamente ma la chiamata della funzione realloc fallisce....
void concat_string()
{
    char buffer[256], *string_origin = "", *string_new="";
    size_t size_string_origin = 0 , size_string_new = 0 , size_string_conc=0;
    
    size_string_origin = input_string(buffer);
    string_origin = (char*) malloc(size_string_origin*(sizeof(char)));
    
    if( strcpy(string_origin, buffer) == NULL)
        puts("\nError string origin ");
    
    size_string_new = input_string(buffer);
    
    string_new = (char*) malloc(size_string_new*(sizeof(char)));
    if( strcpy(string_new, buffer) == NULL)
        puts("\nError string origin ");
     
    size_string_conc = size_string_origin+size_string_new ;
    
    string_origin = (char*) realloc( string_origin ,( size_string_conc)*(sizeof(char)));
    strcat(string_origin, string_new);
    printf("\nConcatenated string = %s", string_origin);
    
    free(string_new);
    free(string_origin);
    }

7 Risposte

  • Re: Errore realloc() di una string in C

    A se all'ultimo fai la free che senso ha?
  • Re: Errore realloc() di una string in C

    Ciao,

    lo scopo è prettamente didattico, alla fine libero la memoria perchè dopo aver stampato il risultato non mi serve piu.

    La cosa che non capisco è perchè c'è un errore nell'riallocazione della memoria, forse sbaglio nella sintassi?
  • Re: Errore realloc() di una string in C

    Ma quale errore scusa? Da cosa lo vedi questo errore?
  • Re: Errore realloc() di una string in C

    Sto utilizzando CodeLite sotto windows, quando il programma chiama realloc() si interrompe visualizzando "Program Received signal SIGTRAP", e non riesco neanche a debaggare.
  • Re: Errore realloc() di una string in C

    Puoi testare i parametri che passi con una printf prima della realloc per capire se c'è qualcosa di anomalo.
    Non è possibile provare il codice senza avete la funzione input_string e capire cosa fa.
  • Re: Errore realloc() di una string in C

    Ho provato con printf ed in debug e le stringhe "string_origin" e "string_new"sono valorizzate correttamente, alla chiamata del realloc ho il crash con il messaggio di errore.

    La funzione input_string() è la seguente
    
    size_t input_string(char *string_buffer)
    {
            
        clear_stdin();
        puts("\nInsert string : ");
        gets(string_buffer);
        clear_stdin();
        
        return strlen(string_buffer);
    }
    
    Non vorrei sia un problema di codelite magari mi conviene provare con un altro tool?
  • Re: Errore realloc() di una string in C

    La prova oggetto della discussione l`avevo fatta sollo windows con codelite.
    Ho riprovato sotto linux con qtcreator e il problema non si è verificato.

    Adesso riprovo qtcreator sotto windows per capire se il problema è in codelite o meno....
Devi accedere o registrarti per scrivere nel forum
7 risposte