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

标签 c++ debugging error-handling assertion

我尝试运行此代码时遇到问题

void MyClass::setUp(){
    list->clear();
    Iterator i = ctr.getAll().iterator();
    while (i.valid()) {
        list->addItem(QString::fromStdString(i.elem().getNr()));
        i.next();
    }
}

当我退出函数时,会发生错误:

Debug Assertion Failed!

File:C:\Program Files \Microsoft Visual Studio 14.0\ VC\ include\ xmemory0 line:106

Expression: "(_Ptr_user&(_BIG_ALLOCATION_ALIGNMENT -1))==0 " &&0



我正在尝试遍历自定义列表

Iterator类是这样的:
void Iterator::first(){
    while (pos < ht.nrElem && ht.list[pos] == nullptr)
        pos++;
    if (pos < ht.nrElem)
        current = ht.list[pos];
}

Iterator::Iterator(const HashTable & ht): ht { ht }{
    pos = 0;
    first(); // current will refer the first element of the list
}


void Iterator::next(){
    current = current->getNext();
    if (current == nullptr) {
        pos++;
        first();
    }
}

bool Iterator::valid(){
    return (pos < ht.nrElem) && (current != nullptr);
}

Car& Iterator::elem() const{
    return current->getCar();
}

最佳答案

一方面,Iterator::first以及构造函数都不必初始化current。其次,在Iterator::Iterator(const HashTable & ht): ht { ht }中,这是否意味着Iterator具有成员ht,并且该参数也称为ht?这是一个坏习惯。永远不要调用与类字段同名的成员函数参数。

关于c++ - C++调试断言失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37440057/

相关文章:

c++ - 如何创建紧凑的 Qt4 vBoxLayout

c++ - 模板函数重载

scala - 当函数具有参数的先决条件时,返回 Either/Option/Try/Or 是否被视为可行/惯用的方法?

php - 更改错误处理方式后,php用户登录不再起作用

android - 资源链接失败/Android Studio College Project

c++ - 使用 Qt 测量过程的实际运行时间

c++ - 非类类型Date(int,int,int)的成员的错误请求

c++ - 如何在多显示器设置中测试我的 Windows 应用程序?

java - 无法检索 'this' 的正确封闭实例

eclipse+maven+tomcat调试