簡體   English   中英

C ++測試示例中超出了內存限制

[英]memory limit exceeded in C++ test sample

我正在網站上進行示例測試: https : //www.testdome.com/for-developers/solve-question/9808我分別為基類和派生類添加了兩個析構函數,以釋放構造函數分配的內存。 此問題的前兩個要求已成功解決,但結果失敗,原因是:使用定時多項選擇測試作為多項選擇測試:超出了內存限制

我修改后的代碼如下,如果您能幫助修復失敗,我將不勝感激。

#include <iostream>
#include <string>

class MultipleChoiceTest
{
public:
    MultipleChoiceTest(int questionsCount)
    {
        this->questionsCount = questionsCount;
        answers = new int[questionsCount];
        for (int i = 0; i < questionsCount; i++)
        {
            answers[i] = -1;
        }
    }

    void setAnswer(int questionIndex, int answer)
    {
        answers[questionIndex] = answer;
    }

    int getAnswer(int questionIndex) const
    {
        return answers[questionIndex];
    }
    ~MultipleChoiceTest()
    {
        delete answers; // release memory
    }
protected:
    int questionsCount;

private:
    int* answers;
};

class TimedMultipleChoiceTest : public MultipleChoiceTest
{
public:
    TimedMultipleChoiceTest(int questionsCount)
        : MultipleChoiceTest(questionsCount)
    {
        times = new int[questionsCount];
        for (int i = 0; i < questionsCount; i++)
        {
            times[i] = 0;
        }
    }

    void setTime(int questionIndex, int time)
    {
        times[questionIndex] = time;
    }

    int getTime(int questionIndex) const
    {
        return times[questionIndex];
    }
    ~TimedMultipleChoiceTest()
    {
        delete times; // release memory
    }
private:
    int* times;
};

#ifndef RunTests
void executeTest()
{
    MultipleChoiceTest test(5);
    for (int i = 0; i < 5; i++)
    {
        test.setAnswer(i, i);
    }

    for (int i = 0; i < 5; i++)
    {
        std::cout << "Question " << i + 1 << ", correct answer: " << test.getAnswer(i) << "\n";
    }
}

int main()
{
    for (int i = 0; i < 3; i++)
    {
        std::cout << "Test: " << i + 1 << "\n";
        executeTest();
    }
}
#endif  

您應該使用delete []而不是delete來取消分配動態數組。

另外,您似乎沒有使用派生類,但是, MultipleChoiceTest的析構函數應該是虛擬的

暫無
暫無

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

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