相关疑难解决方法(0)

不可能的一系列事件

我试图在for循环中追踪一个神秘的迭代器问题.我在迭代器中得到一个错误,operator!=这通常意味着被比较的迭代器不属于同一个容器.跟踪Microsoft的库实现,operator!=调用operator==此测试的位置:

    bool operator==(const _Myiter& _Right) const
        {   // test for iterator equality
 #if _ITERATOR_DEBUG_LEVEL == 2
        if (this->_Getcont() == 0
            || this->_Getcont() != _Right._Getcont())
            {   // report error
            _DEBUG_ERROR("list iterators incompatible");
Run Code Online (Sandbox Code Playgroud)

为了获得更多信息,我写了这个小函数来替换我!=for循环中:

template<typename iter>
bool bang_equal(const iter & left, const iter & right)
{
   static int count = 0;
   auto p1 = left._Getcont();
   auto p2 = right._Getcont();
   ATLTRACE("Iterator comparison left _Getcont()=%p right _Getcont()=%p %d\n", p1, p2, ++count);
   MemoryBarrier(); …
Run Code Online (Sandbox Code Playgroud)

c++ visual-c++

13
推荐指数
2
解决办法
644
查看次数

Windows CRT和断言报告(中止,重试,忽略)

调试模式下的Windows CRT将显示"中止,重试,忽略"窗口,如果应用程序命中assert(false),有时它会多次创建并填满我的屏幕.

如果断言在调试器中断开而不问我任何问题,我会喜欢它.

我修改了CRT报告标志,这些标志没有任何效果.

我也试图修改报告钩子.它会在出现25-30"Abort"对话框后被调用.

我正在构建一个由单独的程序加载的DLL,如果这有帮助的话.它看起来像加载我的DLL的主机程序与调用我的代码的线程不一致.似乎其中一个线程已停止,但其他线程仍在运行.

如何配置CRT来执行此操作?

visual-studio-2008 visual-studio visual-c++

5
推荐指数
1
解决办法
3512
查看次数