淡怀 2017-10-31 15:55 采纳率: 0%
浏览 1660
已采纳

段错误,求大神解释一下

6 int main(void) {
(gdb) n
7 char arr[] = "hello";
(gdb) n
8 char *p = "world";
(gdb) n
9 printf("pid:%d\n",getpid());
(gdb) n
pid:10709
10 printf("&arr:%p\n&p:%p\nworld:%p\nhello:%p\n",&arr,&p,p,"hello");
(gdb) n
&arr:0x7fffffffdff0
&p:0x7fffffffdfe8
world:0x400810
hello:0x400841
11 printf("arr:%s\n",arr);
(gdb) n
arr:hello
12 printf("p:%s\n",p);
(gdb) n
p:world
13 strcpy(p,arr);
(gdb) n

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7ab14e6 in ?? () from /lib/x86_64-linux-gnu/libc.so.6
(gdb) n
Cannot find bounds of current function
(gdb) n

0x00007ffff7ab14e6这个地址是什么意思,这个是虚拟地址?系统想告诉我这个虚拟地址没有对应的物理地址?

  • 写回答

1条回答 默认 最新

  • threenewbee 2017-11-01 00:28
    关注

    strcpy(p,arr);
    错误在这里,p指向常量区,不能写入
    还有你看到的地址,都是逻辑地址。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?