BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #92045同步于 2016/6/6
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

诡异的段错误(可能已解决)

cyf333333
2016/6/6镜像同步18 回复
综述: 本人的毕设代码的一部分,功能是比较3个json的异同,3个json树分别从3个文件读入,然后传进一个函数去比较 json的解析使用的rapidjson,貌似性能不错,然后这个函数出问题了。。。 先上代码: void function(std::string file0, std::string file1, std::string file2, std::string filename) { // 构造json Document doc0, doc1, doc2; doc0.Parse(file0.c_str()); doc1.Parse(file1.c_str()); doc2.Parse(file2.c_str()); queue<Value*> nodeQueue0; queue<Value*> nodeQueue1; queue<Value*> nodeQueue2; // 获取nodelist Value& n0 = doc0["description"]["-diagram"]["node"]; Value& n1 = doc1["description"]["-diagram"]["node"]; Value& n2 = doc2["description"]["-diagram"]["node"]; // 加入队列 nodeQueue0.push(&n0); nodeQueue1.push(&n1); nodeQueue2.push(&n2); while(!nodeQueue0.empty()) // 从这一行开始出问题 { // 从队列获取nodelist Value* nodelist0 = nodeQueue0.front(); Value* nodelist1 = nodeQueue1.front(); Value* nodelist2 = nodeQueue2.front(); // 后面省略。。。 } } 问题出在26行附近,当执行到这一行while的时候,仍然很正常,然后点下一步,箭头走到29行(还没执行),调试器给我报了个段错误,找了很久没找出原因,一度怀疑是26行访问了什么不该访问的地址,将26行改成while(true)也不行,甚至26行注释掉只留下花括号也不行。。。抓狂中
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
cyf333333机器人#1 · 2016/6/6
@nuanyangyang
chenxiansf机器人#2 · 2016/6/6
暖神肯定让你用python
nuanyangyang机器人#3 · 2016/6/6
用Python吧。
nuanyangyang机器人#4 · 2016/6/6
用Java也行。如果实在不想用有垃圾回收的语言,用Rust也行,哪个都比C++容易使用。起码出错了不是“从什么都不发生到机器冒烟都可能”
dfsocean机器人#5 · 2016/6/6
抽风的也许只是ide本身。 【 在 cyf333333 的大作中提到: 】 : 综述: : 本人的毕设代码的一部分,功能是比较3个json的异同,3个json树分别从3个文件读入,然后传进一个函数去比较 : json的解析使用的rapidjson,貌似性能不错,然后这个函数出问题了。。。 : ...................
cyf333333机器人#6 · 2016/6/7
ide会导致这种时有时无而且一旦发生必定在某一行的问题吗。。。 【 在 dfsocean 的大作中提到: 】 : 抽风的也许只是ide本身。 :
cyf333333机器人#7 · 2016/6/7
其他几个语言虽然都会点,但是已用了多年C艹,加上毕设写了一般了这时候换岂不是重来,还不如换回windows+vs保平安 【 在 nuanyangyang 的大作中提到: 】 : 用Java也行。如果实在不想用有垃圾回收的语言,用Rust也行,哪个都比C++容易使用。起码出错了不是“从什么都不发生到机器冒烟都可能”
cyf333333机器人#8 · 2016/6/7
【 在 chenxiansf 的大作中提到: 】 : 暖神肯定让你用python
nuanyangyang机器人#9 · 2016/6/7
在代码里插入一些printf吧,常用的调试方法。 话说你这么多年来是怎么调试的? 【 在 cyf333333 的大作中提到: 】 : 其他几个语言虽然都会点,但是已用了多年C艹,加上毕设写了一般了这时候换岂不是重来,还不如换回windows+vs保平安