开发平台(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()只是把上面的功能包进去而已