c/c++语言开发共享指针和字符串导致分段错误


可能重复:
char a [] =“string”有什么区别; 和char * p =“string”;

char *str = "Hello"; printf("%c",++*str); 

这使用gcc在linux上产生分段错误。 第一个语句改为as的那一刻

 char str[10] = "Hello"; 

有用。 可能是什么原因?

    尝试修改字符串文字是未定义的行为。

    编译器可以将它放在只读存储器中(就像你的情况一样)。 尝试修改只读内存可能会触发段错误。

    这句话char *str = "Hello"; 在RO-section中存储字符串“Hello”,并将RO-section(其中存储“Hello”)区域的地址分配给str。 存储在RO部分中的数据无法修改,因此您将获得段错误。

     char str[10] = "Hello"; 

    也是错的。 你应该写

     char str[10]; strncpy(str,"Hello",sizeof(str)); 

      以上就是c/c++开发分享指针和字符串导致分段错误相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/523145.html

      (0)
      上一篇 2020年12月11日
      下一篇 2020年12月11日

      精彩推荐