内存分配不对。。。

来源:5-3 字符数组和指针字符串

学术不精

2015-07-11 17:45

老师,我这里str和st2在一起

$1 = (char (*)[6]) 0x7fffffffe660

(gdb) p &str2

$2 = (char **) 0x7fffffffe668

(gdb) p &str3

$3 = (char (*)[10]) 0x7fffffffe650

所以溢出的话 str2被修改,而str2不能被该,所以都会运行报错。。如何让str3和str1在一起?

写回答 关注

2回答

  • qq_隐匿_03229380
    2016-05-25 23:10:57

    str2

    是*str2吗

  • 洪一帆
    2015-12-19 13:35:09

    你的str2是在数据段(

    (gdb) p &str2

    $2 = (char **) 0x7fffffffe668

    ),那就是可以修改的,代码段才不能修改,至于谁和谁会连续分配在一起,这都是不可预料的,像你的str2就没放在代码段,不同的编译器会有不同的优化,只有数组才会确定连续分配在一起

Linux C语言指针与内存

指针-C语言的核心,代领大家对c语言有更加深刻的理解

116475 学习 · 250 问题

查看课程

相似问题