char指针中的分段错误

Aaq*_*Ali 1 c string-literals

运行以下代码时出现分段错误.这个错误的原因是什么?请帮忙

int main()
{
    char *str2 = "Hello";
    str2[3] = 'J';
    printf("%s\n",str2);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

msc*_*msc 7

这是一个未定义的行为,因为您正在尝试修改字符串文字的内容.字符串文字主要存储在只读位置.所以你不要修改它,否则会调用未定义的行为.

C11§6.4.5字符串文字(第7段):

如果这些数组的元素具有适当的值,则这些数组是否不同是未指定的.如果程序试图修改任一表单的字符串文字,则行为未定义"