取消引用char指针会导致段错误

Joh*_*Doe 0 c segmentation-fault

我正在使用strchr在缓冲区中找到=遇到的点.然后我正在改变那个相同的角色而不是a M.我在尝试执行此操作的行中遇到了段错误.

这是完整的代码:

int main(void){
    char *buffer = "Name=Tom"
    char *pointer;
    pointer = strchr(buffer,'=');
    *pointer = 'M';    <--------- Segfault Occurs here
return (0);
}
Run Code Online (Sandbox Code Playgroud)

我在segfault中遇到以下错误:

Process terminating with default action of signal 11 (SIGSEGV)
 Bad permissions for mapperd region at addresss .....
Run Code Online (Sandbox Code Playgroud)

Jac*_*ack 7

您没有检查返回值strchr,可能是NULL因为我们没有看到您的输入.

除此之外,在哪里以及如何buffer宣布?并非所有char*都可以修改,因为它们可以存储在二进制文件的数据段中(作为字符串文字).

  • 然后原因是我指出的第二个原因.该文字是只读的,它存储在数据段中,尝试使用char [] buffer ="..". (2认同)