C ++逻辑错误:指针数组&用户定义的类

时间:2016-04-01 23:22:15

标签: c++ arrays pointers

以下是来自" Intro to C ++"的2个程序。麻省理工学院开放课件,作业3的问题2.5和2.6。

两者都应该有逻辑错误。然而,即使使用计算机,我也无法发现任何东西。没有产生任何错误,结果看起来也很正常。

任何人都可以发现任何异常吗?

这是问题2.6:

#include <iostream>

using namespace std;

class Point{
    private:
    int x,y;

    public:
    Point(int u, int v) : x(u), y(v){}
    int getX() {return x;}
    int getY() {return y;}
};

int main(int argc, char *argv[]) {
    Point *p = new Point(5,3);
    cout<<p->getX()<<' '<<p->getY()<<endl;

    return 0;
}

这是问题2.5:

#include <iostream>

using namespace std;

int main(int argc, char *argv[]) {
    int size;
    cin >> size;
    int* nums = new int[size];

    for (int i = 0; i < size; ++i) {
        cin >> nums[i];
        cout << nums[i];
    }

    delete nums;
}

2 个答案:

答案 0 :(得分:2)

问题2.6未命中'删除p;'。问题2.5应该有'delete [] num;'而不是'删除数字;'。这两个问题都会导致内存泄漏。

答案 1 :(得分:0)

我不确定,但我发现以下问题:

  1. 内存未释放。 “删除p;”应该在结尾调用

  2. 调用“delete”的错误变体。你应该使用“delete [] nums;”释放为数组分配的内存。