分割故障前缺少计数
missing cout before segmentation fault
我的代码中有一个分割错误,所以我把很多指望在可疑的方法来定位在哪里。
bool WybierajacyRobot::ustalPoczatekSortowania(){
cout << "ustal poczatek sortowania: " << poczatekSortowania << endl ;
list< Pojemnik >::iterator tmp;
cout << "LOL"; // <-- this cout doesn't print when segfault
if (!poczatekSortowania){ // <- T1
cout << "first task" ;
tmp = polka.begin();
}
else{ // <-- T2
cout << " second task " ;// <-- this cout doesn't print when segfault
tmp = ostatnioUlozony;
cout << " debug cout " ; // <-- this cout doesn't print when segfault
++tmp; // <-- segfault
} ...
如果方法被调用并且没有段错误,则从T1和之前的每个计数都被打印。在line++中,tmp是段错误,因为ostatnioUlozony是NULL,当方法转到T2时,没有first的每个cout都不打印。为什么?
我正在使用Netbeans和gcc,我在Netbeans中找到了调试的"段故障线",但在我使用之前,我花了一些时间在添加cout行和运行程序上。
谢谢,
您需要用std::flush
或std::endl
(也会给出换行符)刷新输出流,否则您不能保证看到输出:
cout << " second task " << std::flush;
尽管如此,如果您递增一个奇异迭代器(空指针),则会有未定义的行为,因此只有可能起作用。就c++而言,你的程序可以发射一枚核导弹。
另一个解决方案是使用std::cerr代替std::cout。它是非缓冲的,所以不需要刷新,并且为了调试的目的使用std::cerr稍微更习惯一些。
相关文章:
- 分割故障C++矩阵
- C ,二进制树的高度,而不是检查我的子树是否为空,而是在检查我的子树是否是叶子节点.抛出分割故障
- 我正在为此代码分割故障
- 在执行strcpy时获取分割故障错误
- 空隙指针分割故障
- Xcode会产生分割故障,而不是例外
- OPENCV C 中的分割故障误差
- 分割故障:核心倾倒C 矢量对字符串:
- C 2D数组导致分割故障(核心倾倒)
- 分割故障/错误读数变量-C 列表
- DLSYM导致分割故障
- 使用C 中的操作员删除的分割故障
- 使用Linux X64下的Libmozjs-52(SpidermonKey)进行分割故障
- 使用长变量时分割故障(11)错误
- C - 返回字符串时的分割故障
- 创建VertexArray时的分割故障
- 向量分割故障的向量
- 从std :: fileSystem ::路径对象的类中退出时的分割故障
- C 矢量分割故障
- 基于向量的数据格式的分割故障误差