#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char *a = "Hello ";
const char *b = "World";
printf("%s", strcat(a, b));
system("PAUSE");
return EXIT_SUCCESS;
}
1
A
Répondre
7
Parce que vous écrivez des données à un emplacement de mémoire que vous ne possédez pas.
En effet, lors de l'exécution de strcat, vous ajoutez les caractères de la chaîne b juste après les caractères de la chaîne a. Mais vous n'avez pas réclamé pour la mémoire après la chaîne a.
2
Lorsque vous concaténez b à vous écrivez en mémoire que vous ne l'avez pas allouez,
Les littéraux de chaîne ne sont pas modifiables. http://stackoverflow.com/questions/1614723/why-is-this-c-code-causing-a-segmentation-fault/1614739#1614739 – AnT