为了账号安全,请及时绑定邮箱和手机立即绑定

采用堆分配空间时,结果一致,但为啥会报警告?

#include <iostream>

using namespace std;

class Coordinate

{

    

public:

Coordinate()

{

}

// 打印坐标的函数

void printInfo()  

{

    cout << "(" << m_iX <<","<< m_iY << ")" << endl;

}

public:

int m_iX;

int m_iY;

};


int main(void)

{

//定义对象数

    Coordinate *p = new Coordinate[2];

    p[0].m_iX=1;

    p->m_iY=2;

    p++;

    p[0].m_iX=3;

    p->m_iY=4;

    

    p--;

//遍历数组,打印对象信息

for(int i = 0; i < 2; i++)

{

p[i].printInfo();

}

p--;

delete []p;

p=NULL;

return 0;

}

运行结果:

/bin/bash: line 1: 12644 Segmentation fault      (core dumped) index
(1,2)
(3,4)


正在回答

1 回答

遍历数组时没有将指针位移,所以销毁之前的p--会导致指针指向不合法,删除这行

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C++远征之封装篇(下)
  • 参与学习       70918    人
  • 解答问题       514    个

封装--面向对象三大特征之一,通过案例让C++所学知识融会贯通

进入课程

采用堆分配空间时,结果一致,但为啥会报警告?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信