2010-01-14 6 views
1
#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; 
} 
+3

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

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,

Questions connexes