采用堆分配空間時,結(jié)果一致,但為啥會報警告?
#include <iostream>
using namespace std;
class Coordinate
{
? ??
public:
Coordinate()
{
}
// 打印坐標的函數(shù)
void printInfo()??
{
? ? cout << "(" << m_iX <<","<< m_iY << ")" << endl;
}
public:
int m_iX;
int m_iY;
};
int main(void)
{
//定義對象數(shù)
? ? 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--;
//遍歷數(shù)組,打印對象信息
for(int i = 0; i < 2; i++)
{
p[i].printInfo();
}
p--;
delete []p;
p=NULL;
return 0;
}
運行結(jié)果:
/bin/bash:?line?1:?12644?Segmentation?fault??????(core?dumped)?index (1,2) (3,4)
2019-09-23
遍歷數(shù)組時沒有將指針位移,所以銷毀之前的p--會導致指針指向不合法,刪除這行