关于内存泄露的问题

Lionheartch 2013-04-11 02:12:59
代码如下,动态申请内存,到最后delete的时候为什么会出错呢?代码如下,灰常着急啊,大神快来
//获得一个畸变量数组

#include <iostream>
#include <iomanip>
#include <cmath>
using std::cin;
using std::cout;
using std::endl;
using std::setprecision;

const double xp = 0, yp = 0;

class pointcoord
{
private:
double x, y;
public:
pointcoord()
{
x = y = 0;
}
void readcoord(const double& a,const double& b)
{
x = a;
y = b;
}
void showcoord()
{
cout<<setprecision(20)x<<"\t"<<y<<endl;
}
/*pointcoord& operator=(const pointcoord&& apoint)
{
this->x = apoint.x;
this->y = apoint.y;
return *this;
}*/
pointcoord& operator=(const pointcoord& apoint)
{
this->x = apoint.x;
this->y = apoint.y;
return *this;
}
};
pointcoord CalcDistortion(const double &a,const double &b);

int main()
{
double x0 = 0.0, y0 = 0, xn = 0, yn = 0, x_step = 0, y_step = 0;
int n = 0;
double x_offset = 0, y_offset = 0;

pointcoord *Distor_Array;

cout << "Enter x0,y0,xn,yn,n,in sequence" << endl;
cin >> x0 >> y0 >> xn >> yn >> n;
if(n<=0)
{
cout<<"n value error.";
return 0;
}
Distor_Array = new pointcoord[n];
x_offset = x0 - xp;
y_offset = y0 - yp;
x_step = (xn-x0)/n;
y_step = (yn-y0)/n;
double tempx,tempy;
for(int i=0;i<=n;i++)
{
tempx = x_offset+static_cast<double>(i)*x_step;
tempy = y_offset+static_cast<double>(i)*y_step;
Distor_Array[i] = CalcDistortion(tempx,tempy);
}

for(int j=0;j<=n;j++)
{
cout<<j<<"\t";
Distor_Array[j].showcoord();
}

delete [] Distor_Array;//内存泄露,问题出在哪?
//system("pause");
return 0;
}
pointcoord CalcDistortion(const double &a,const double &b)
{
double DeltaX = 0, DeltaY = 0;
pointcoord temppoint;
temppoint.readcoord(DeltaX,DeltaY);
return temppoint;
}
...全文
119 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lionheartch 2013-04-11
  • 打赏
  • 举报
回复
引用 1 楼 adlay 的回复:
中间访问 new 的内存的时候越界了 for(int i=0;i<=n;i++) { tempx = x_offset+static_cast<double>(i)*x_step; tempy = y_offset+static_cast<double>(i)*y_step; Distor_Ar……
感谢~
赵4老师 2013-04-11
  • 打赏
  • 举报
回复
“多一少一”问题占程序员常犯错误的10%以上!
csd1208 2013-04-11
  • 打赏
  • 举报
回复
引用 1 楼 adlay 的回复:
中间访问 new 的内存的时候越界了 for(int i=0;i<=n;i++) { tempx = x_offset+static_cast<double>(i)*x_step; tempy = y_offset+static_cast<double>(i)*y_step; Distor_Ar……
楼上 正解
www_adintr_com 2013-04-11
  • 打赏
  • 举报
回复
中间访问 new 的内存的时候越界了 for(int i=0;i<=n;i++) { tempx = x_offset+static_cast<double>(i)*x_step; tempy = y_offset+static_cast<double>(i)*y_step; Distor_Array[i] = CalcDistortion(tempx,tempy); } for(int j=0;j<=n;j++) { cout<<j<<"\t"; Distor_Array[j].showcoord(); } 这两个 for 都不能用 <=, 改成 <

64,682

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧