首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除字符指针会导致分段故障

删除字符指针会导致分段故障
EN

Stack Overflow用户
提问于 2016-02-08 22:11:15
回答 3查看 853关注 0票数 1

我使用strchr在缓冲区中找到一个遇到=的点。然后,我将这个相等的字符更改为一个M。在我试着做这件事的那条线上,我遇到了一个分段故障。

这是完整的代码:

代码语言:javascript
复制
int main(void){
    char *buffer = "Name=Tom"
    char *pointer;
    pointer = strchr(buffer,'=');
    *pointer = 'M';    <--------- Segfault Occurs here
return (0);
}

对于分段错误,我得到以下错误:

代码语言:javascript
复制
Process terminating with default action of signal 11 (SIGSEGV)
 Bad permissions for mapperd region at addresss .....
EN

回答 3

Stack Overflow用户

发布于 2016-02-08 22:14:19

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

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

票数 7
EN

Stack Overflow用户

发布于 2016-02-08 22:47:54

您正在尝试修改字符串文本的值,该字符串文本将存储在只读内存段中。这会导致访问冲突。

问题在于:

代码语言:javascript
复制
char *buffer = "Name=Tom";

修改为:

代码语言:javascript
复制
char buffer[] = "Name=Tom";
票数 4
EN

Stack Overflow用户

发布于 2016-02-08 22:50:18

你在这里做的是错的:

代码语言:javascript
复制
char *buffer = "Name=Tom";

当您将字符串文本赋值给指针时,它被存储为const char*,不能修改,这就是以后在代码中要做的事情。

在这里,您首先需要将内存分配给buffer,然后使用strcpy复制以下内容:

代码语言:javascript
复制
char buffer[100];
strcpy(buffer, "Name=Tom");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35280341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档