程序时不时会出现一个错误

图片说明

vs2008写的程序,也用了QT做得界面,程序运行时有时候会出现这个错误,不是一直出现的,可能运行7/8次会有一次。有谁有经验大概是哪一方面的问题。
程序中使用 QVecto的地方
QVector m_vectorMsg;
void QThreadProc::PostMessage(uint uMsg)
{
m_mutex.lock();

if(m_vectorMsg.isEmpty())
{
    m_vectorMsg.append(uMsg);
    m_mutex.unlock();
    return;
}

uint uSize = m_vectorMsg.size();
for (uint i = 0; i < uSize; i++)
{
    if (m_vectorMsg.at(i) == uMsg)
    {
        m_vectorMsg.remove(i);
        break;
    }
}
m_vectorMsg.append(uMsg);

m_mutex.unlock();

}

bool QThreadProc::GetMessage(uint& uMsg)
{
m_mutex.lock();

if(m_vectorMsg.isEmpty())
{
    m_mutex.unlock();
    return false;
}

uMsg = m_vectorMsg.at(0);
m_vectorMsg.remove(0);
m_mutex.unlock();
return true;

}

else {
Q_ASSERT(rmutexes.isEmpty());
for (int i = 0; i < MAX_READERS; i++) {
Qt::HANDLE mutex = getMutexHandle(i, false);
if (mutex)
rmutexes.append(mutex);
}
if (rmutexes.size()) {
DWORD res = WaitForMultipleObjects(rmutexes.size(), rmutexes.constData(),
TRUE, block ? INFINITE : 0);
if (res != WAIT_OBJECT_0 && res != WAIT_ABANDONED) {
if (res != WAIT_TIMEOUT)
qErrnoWarning("QtLockedFile::lock(): WaitForMultipleObjects failed");
m_lock_mode = WriteLock; // trick unlock() to clean up - semiyucky
unlock();
return false;
}
}
}

m_lock_mode = mode;
return true;

}

别用VS2008编程,用点常见版本

断言出错哈,你这样贴出来代码不好看。那个数组是你自己写的吗?好像访问越界了。具体哪里出的错,那个错误信息也看得到哈有对应的文件和行号。找到对应行打个断点,看数据哪里错了。