A me pare che strlen() non conti il carattere terminatore nullo... :master:Originariamente inviato da LeleFT
Non ho capito una parte del tuo codice:
Dato che mem_str1 è la lunghezza di str1 sarà sempre minore della somma data da se stesso + la lunghezza di un'altra stringa (a meno che la seconda stringa non sia nulla). Tantopiù che confronti il valore di una lunghezza di una stringa con un valore di [i]memoria occupata da una stringa, nettamente più lunga.codice:size_t mem_nec = (end_str1 + strlen(str2))*sizeof(char); if (mem_nec > mem_str1) { return (NULL); }
Il byte in più che ti viene restituito, probabilmente, è il terminatore NULL, che viene sottointeso nelle stringhe fisse:
Ciao.codice:char *miaStringa = "Ciao"; equivale a |--------------------| | C | I | A | O | \0 | |--------------------|[/B]