作者mario86123 (mario86123)
看板C_and_CPP
标题[问题] 堆叠已损毁
时间Sat May 13 09:30:37 2017
开发平台(Platform): (Ex: Win10, Linux, ...)
win10
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
vs 2015
问题(Question):
这个程式是要把喂入的资料转成二元树存起来
我程式写到一个段落侦错的时候
发现第28行
第一次malloc是成功的
但第二次malloc就失败了
它显示堆积已损毁
想请问一下程式是哪里出错了呢?
喂入的资料(Input):
(-,(/,(*,16,(+,24,13)),9),10)
程式码(Code):(请善用置底文网页, 记得排版)
http://codepad.org/e35UfNCP
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 118.166.236.64
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1494639040.A.D21.html
1F:→ sunneo: line 33: root->data[1] = '/0'; 05/13 11:27
2F:→ sunneo: heap坏掉,就要检查对malloc的指标写入的操作 05/13 11:28
3F:→ sunneo: data有[3],operatorr有[5],operatorr没有初始化 05/13 11:30
4F:→ sunneo: 所以你的strcpy应该有蛮大机会复制超过3个byte 05/13 11:32
5F:→ hunandy14: 26行没有归零 32行有机会复制到 垃圾 05/13 12:12
6F:→ hunandy14: 不过主因是31不正确的操作(没补结束符) 05/13 12:13
7F:→ hunandy14: 然後就是楼上说的复制超过 05/13 12:13
8F:→ hunandy14: 71行 尝试把一个 长度超过3的复制进去 05/13 12:14
9F:→ hunandy14: 33行操作是错误的 直接 = 0 就好 05/13 12:18
10F:→ tinlans: 标题堆叠,内文堆积 05/14 05:01
11F:→ mario86123: 成功了 感谢~ 05/14 08:28
12F:推 Bencrie: 堆叠损毁跟堆积损毁是不一样的东西啊啊啊 05/16 22:49