gpt4 book ai didi

c++ - 在段错误之前缺少 cout

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:24:02 26 4
gpt4 key购买 nike

我的代码中有一个段错误,所以我在可疑方法上放置了很多 cout 来定位位置。

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 和之前的每个 cout。在++tmp 行中是段错误,因为 ostatnioUlozony 是 NULL,当方法转到 T2 时,没有 first 的每个 cout 都没有被打印出来。为什么?

我正在使用 Netbeans ang gcc,我在 Netbeans 中发现了带调试的“段错误行”,但在我使用之前,我花了一些时间来添加 cout 行和运行程序。

非常感谢,

最佳答案

您需要使用 std::flushstd::endl 刷新输出流(这也会给出一个换行符),否则无法保证查看输出:

cout << " second task " << std::flush;

尽管如此,如果您递增一个单一的迭代器(它是空指针),您就会有未定义的行为,所以这只是 可能 起作用。就 C++ 而言,您的程序可以改为发射核导弹。

关于c++ - 在段错误之前缺少 cout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15862067/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com