C_and_CPP 板


LINE

开发平台(Platform): (Ex: Win10, Linux, ...) Win7 SP1 x64 编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出) 1. Code::Blocks 16.01 (直接Crash掉) 2. Visual Studio 2017 (Debug Mode可顺利执行) 问题(Question): 自己以前用C写了一个读档的程式 会读取txt档之後把换行隔开,分别存到阵列里面。 後来因为要在C++用,把它包成Class之後 才发现一开始的设计好像有问题。 Case 1. 当单独使用一个Class时,程式都不会有问题(如下图)。 https://i.imgur.com/ldx36YH.png
Case 2. 当两个Class并存时,编译可过,但执行会Crash掉(如下图)。 https://i.imgur.com/YkkbyFk.png
有使用动态记忆体分配,不过想说也没用多少所以没free掉。 虽然C++已经有很完善的功能可以完成这些功能, 但私心还是想找出问题点在哪里, 想请各位高手帮忙看看是哪里疏忽了。 喂入的资料(Input): 任意txt档,不要一次换两行以上的都可以。 (可参照程式码附件) 预期的正确结果(Expected Output): 正确读取txt档,不会crash掉(如下图)。 https://i.imgur.com/VLWuIfz.png
错误结果(Wrong Output): 就是程式crash掉(如下图)。 https://i.imgur.com/riBeaY3.png
目前在Visual Studio 2017的Debug Mode(x86/64)可以顺利执行 在Release Mode(x64)版本偶有crash,(x86)版本及Code::Block则固定会crash。 程式码(Code):(请善用置底文网页, 记得排版) 一个使用置底文网页, 一个则是将主程式及使用的txt档一并上传Dropbox 1. https://ideone.com/qOIASO (置抵文网页) 2. https://goo.gl/hgPWKz (包含使用的文字档跟主程式) 补充说明(Supplement): 其实做了一整天的测试之後, 推测是里面一个名为readPath()的副程式也有问题。 这样执行多次的话,程式也会crash掉,状况与之前上面描述的很相似 https://i.imgur.com/6TzSLX0.png
自己觉得是记忆体配置的写法有弄错,还特地把malloc改成new 可是两者在Debug状态都可以跑,下断点也看不出所以然来,只好来求助了。 自己用printf慢慢看 似乎会在readPath()里面的这行出问题 fr.file_name = new char*[fr.line_cnt]; 给各位当作参考。 程式主要功能说明: 1. 利用readPath(char* filePath_in)将txt的每行文字,分别储存至ftype的char** 里面 2. fileClass的loadFile()只是把上面的功能包进去而已 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 59.115.102.105
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1505239245.A.86F.html
1F:推 VictorTom: VC2015 release build跑完会出error code c0000374. 09/13 02:41
2F:→ VictorTom: aka. Heap Corruption. 09/13 02:42
3F:→ VictorTom: Debugger挂起来看, 第一个档案fr.line_cnt=2416 09/13 02:43
4F:→ VictorTom: 但程式走到Line 162 for(i...)的时候, s_cnt=2417 09/13 02:45
5F:→ VictorTom: 剩下的给你自己解迷吧:) 09/13 02:48
6F:→ VictorTom: PS. 有时是c0000005 AV; 不影响root cause就是.... 09/13 02:51
7F:推 stucode: 推 VT 大。偷偷给个提示:Heap Corruption 类发生错误 09/13 08:13
8F:→ stucode: 跟造成问题的不一定是同一个地方。然後要是改用 09/13 08:13
9F:→ stucode: std::vector 就可以在 debug 模式下抓出真正问题点。 09/13 08:14
谢谢两位,知道引发错误的地方在哪里了 就是很单纯的违规存取 (昏 下意识的认为fr.line_cnt一定会大於s_cnt了... 想请问两位是怎麽发现的? 当发现错误的当下又是从哪边去找出问题点的呢? 另外,还想顺便请问一下 除了使用vector,有什麽方式可以在程式中帮助判断是不是违规存取吗?
10F:推 johnpage: 请改不同档名! 09/13 12:02
不同档名的意思是? ※ 编辑: rexkou (140.124.73.163), 09/13/2017 12:29:30 ※ 编辑: rexkou (140.124.73.163), 09/13/2017 13:00:36 ※ 编辑: rexkou (140.124.73.163), 09/13/2017 13:03:17
11F:推 stucode: 说实话我是看了 VT 大的推文以後,很快就找到违规存取 09/13 18:15
12F:→ stucode: 的地方。从头找起的话,用单步执行逐项检查初始化、 09/13 18:15
13F:→ stucode: 动态配置、存取边界、指标复制及赋值和档案存取等。 09/13 18:15
14F:→ stucode: 或者是下条件断点在觉得有可能会越界的地方。 09/13 18:15
15F:→ stucode: 除此之外也可以借助一下记忆体侦错工具的力量: 09/13 18:16
16F:→ stucode: https://i.imgur.com/qG1c75E.png 09/13 18:16
谢谢~ 咦好厉害啊,这是Ubuntu吧? 想请问是用什麽开发软体来弄记忆体侦错的呢? ※ 编辑: rexkou (140.124.73.163), 09/13/2017 21:31:27
17F:推 Killercat: Valgrind啊 其实他贴的图就有写了 09/13 23:46
18F:→ Killercat: 这东西连memory leak都有办法抓到一大半 很猛的 09/13 23:46
19F:推 VictorTom: 其实我也是code看了一轮看不出来才上debugger抓看看的, 09/14 00:16
20F:→ VictorTom: 因为是Heap Corrupt, 所以要来的array特别留意了一下. 09/14 00:17
21F:→ VictorTom: 其实这种靠debugger硬干heap issue也不是什麽好方法, 09/14 00:18
22F:→ VictorTom: 像s大那样用正规工具抓memory issue才是比较好的方法:) 09/14 00:19
23F:推 stucode: 工具是 Valgrind 没错。 09/14 14:12







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP