首页 > 解决方案 > 获取有关使用未初始化内存的错误代码

问题描述

我正在使用 Visual Studio 进行编码,但我不明白为什么我只在 else if 条件语句正下方的行中收到错误“错误 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;
}

标签: c++functionpointers

解决方案


 arrayPtr[i] = tempPtr[i];

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

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


推荐阅读