Ho individuato l'errore nel mio programma e ho deciso di scriverne uno semplice, che mi aiuterebbe a capire cosa sta succedendo. Eccolo:munmap_chunk(): puntatore non valido
#include <stdio.h>
#include <stdlib.h>
char * first()
{
char * word = malloc(sizeof(char) * 10);
word[0] = 'a';
word[1] = 'b';
word[2] = '\0';
return word;
}
char * second()
{
char * word = malloc(sizeof(char) * 10);
word = "ab";
return word;
}
int main()
{
char * out = first();
printf("%s", out);
free(out);
out = second();
printf("%s", out);
free(out);
return 0;
}
La funzione first()
funziona correttamente, ma il second()
(esattamente la free(out)
) Errore genarates:
Error in `./a.out': munmap_chunk(): invalid pointer: 0x0000000000400714 *** ababAborted (core dumped)
non capisco il motivo per cui la prima funzione è corretta, ma la il secondo no. Qualcuno potrebbe spiegare perché?
Non è possibile assegnare direttamente una stringa a un array di caratteri, utilizzare 'strcpy (word," ab ")'. – gengisdave