簡體   English   中英

C ++調試斷言失敗

[英]c++ debug assertion failed

我嘗試運行此代碼時遇到問題

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

當我退出函數時,會發生錯誤:

調試斷言失敗!

文件:C:\\ Program Files \\ Microsoft Visual Studio 14.0 \\ VC \\ include \\ xmemory0行:106

表達式:“(_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 這是一個壞習慣。 永遠不要調用與類字段同名的成員函數參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM