gpt4 book ai didi

c++ - 在 C++ 中调试断言失败

转载 作者:行者123 更新时间:2023-11-28 02:09:21 25 4
gpt4 key购买 nike

<分区>

我正在尝试开发一个代码(visual studio 2012)来控制首先读取声纳传感器的移动机器人。
我创建了以下函数:

void layer1(ArRobot *robot,ArSonarDevice *sonar)// this is the avoid front collision layer
{
double range=sonar->currentReadingPolar(-50.0,50.0)-300;
cout<<range<<"\n";
//read sonar in front (subtract robot diagonal) and if <200 act
if(range<200)
{
robot->setVel(-50);robot->setRotVel(50);//move backwards and rotate
ArUtil::sleep(200);//sleep to give time to robt to react
}
}

当我运行它( Debug模式)时出现错误:

Debug assertion failed program C:\Windows\system32\MSVCP110D.dll

它说 Expression: list iterator not dereferencable

我搜索了网站并发现了这个: What exactly is the "Multi-threaded Debug DLL" Runtime Library option doing in VS 2008?

我确定我正在使用调试 dll 运行时库,但没有区别。我也检查了这个问题,它帮助我理解了为什么会显示此错误消息: Visual C++ find line causing "Debug Assertion failed"

我试图找到代码中发生这种情况的确切位置,结果发现它发生在以下行:

double range=sonar->currentReadingPolar(-50.0,50.0)-300;

错误发生了,我想,只要我运行程序,但我将 cout 行添加到函数以输出范围,并将它放在一个连续的 while 循环中。我很惊讶地知道该程序实际上可以很好地读取声纳范围,没有任何问题。它在崩溃前多次读取它,并且在崩溃前几次 cout 正确打印了值。所以它并没有像我想的那样立即崩溃。

那么可能是什么问题呢?

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