代码调试集
来源:互联网 发布:软件初级工程师 编辑:程序博客网 时间:2024/06/06 16:30
###将工作中遇到的程序调试问题汇集于本篇,吸取教训,不在同一个地方跌倒
2016.7.12项目:拼音输入法资源打包工具
FSTGeneric CBuildEnglishDict::apply_apostrophe_rule(FSTGeneric &fst ){ // mapping part for ( int state = 0; state < fst->get_states_count();state++) { FSTArcVector arcs_need_add; for ( FSTArcIter i = fst->arcs_out(state,FSTInput); i.valid(); i++ ) { if ( state != 0 && i->input ==FSTstring_map["'"] ) { arcs_need_add.push_back((FSTArc*)(*i)); } } for(FSTArcIter it(arcs_need_add); it.valid();it++) { fst->add_arc(state, it->next,FSTstring_map[""], it->output, it->weight); } } /*for ( int state = 0; state <fst->get_states_count(); state++ ) { for ( FSTArcIter i = fst->arcs_out(state, FSTInput);i.valid(); i++ ) { if ( state != 0 && i->input ==FSTstring_map["'"] ) { fst->add_arc(state, i->next,FSTstring_map[""], i->output, i->weight); } } }*/ return fst;}
上述代码中的注释掉的为老代码,会导致程序崩溃。注释掉的代码中的内循环用于遍历某个状态下的所有弧。当某条弧满足条件后,执行添加弧操作。该操作会导致FSTArcVector重新分配内存空间,因而再通过原迭代器访问弧就会出现问题。
尽管vector会留有内存空间方便添加元素,但是不能确保在下次添加元素后内存空间不发生变化,即使添加元素后的size仍然小于capacity
0 0
- 代码调试集
- 调试代码
- 代码调试
- 调试代码
- 调试代码
- 代码调试
- 代码调试
- 代码调试
- 代码调试
- 代码调试
- 代码调试
- 代码测试之代码调试
- 代码测试之代码调试
- 代码测试之代码调试
- 代码测试之代码调试
- 代码测试之代码调试
- 代码测试之代码调试
- 代码测试之代码调试
- 相机(摄像头)获取到的图片自动旋转90度解决办法
- Ios使用正则表达式验证手机号码
- 【MVC5】5.创建一个连接字符串和SQL Server LocalDB工作
- angular1中使用track by优化ng-repeat效率
- Android N 通知栏和快捷通知栏带来的改变
- 代码调试集
- java集合框架之Collection
- PHP 获取服务器ip等详细信息
- iOS照片框架
- 天梯- L2-002. 链表去重
- 拆轮子系列:拆 OkHttp
- OpenWRT移植到三星S5PV210处理器上
- 详解java中&&和&
- leetcode_c++:哈希:Palindrome Pairs(336)