以下是来自" 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;
}
答案 0 :(得分:2)
问题2.6未命中'删除p;'。问题2.5应该有'delete [] num;'而不是'删除数字;'。这两个问题都会导致内存泄漏。
答案 1 :(得分:0)
我不确定,但我发现以下问题:
内存未释放。 “删除p;”应该在结尾调用
调用“delete”的错误变体。你应该使用“delete [] nums;”释放为数组分配的内存。