获取有关使用未初始化内存的错误代码

我正在使用Visual Studio进行编码,但我不明白为什么只有在条件条件语句else下方的行上出现错误“错误C6001-使用未初始化的内存'* tempPtr'”。

void removeNumber(double*& arrayPtr,double number,int& size) {

    bool found = false;
    double* tempPtr = new double[size-1];
    for (int i = 0; i < size; i++) {

        if (arrayPtr[i] == number) {
            found = true;

        }
        else if (found == false && arrayPtr[i] != number) {

            arrayPtr[i] = tempPtr[i];

        }
        else {

            arrayPtr[i] = tempPtr[i - 1];
        }

    } delete[] arrayPtr;
    arrayPtr = tempPtr;
    --size;
}

qulinyang 回答:获取有关使用未初始化内存的错误代码

 arrayPtr[i] = tempPtr[i];

在此行中,您尝试将未初始化的tempPtr [i]分配给已初始化的arrayPtr [i]。情况应该相反。但是,如果要为arrayPtr [i]分配空指针,则可以使用空指针初始化tempPtr。

这与问题无关,但是我注意到最后您为arrayPtr取消了内存分配,然后使用arrayPtr。这将在运行时使程序崩溃。您只想在不再使用它时取消分配。

本文链接:https://www.f2er.com/3126905.html

大家都在问