源文件
//---------------------------------【delete类数组指针异常】--------------------------------
// 描述:在删除类指针的时候,如果用++来机械删除下一个指针,因为上一个指针被删除了,其地址值也会被改变
// 如果在来进行++的话得到的就不是原来数组中所指向的下一个指针了。具体请看代码。
//-----------------------------------------------------------------------------------------
#include"head.h"
int main() {
Point *p1 = new Point[2];
//-------------------------------【出错位置】-----------------------------------
// 描述:出错位置
//------------------------------------------------------------------------------
//释放了p1,p1所指向的地址会被改变
cout <<"p1="<< p1 << endl;
delete p1;
cout << "p1=" << p1 << endl;
//现在在来做++运算,计算出来的结果就对了。如果前一条代码没有释放那还是对的。
p1++;
delete p1;
return 0;
}
头文件
#pragma once
#include"iostream"
using namespace std;
class Point {
private:
int x;
int y;
public:
Point() {}
Point(int x,int y) :x(x), y(y) {}
Point* getThis() {
this->x = 100;
cout << "getThis:x=" << this->x <<" y="<< this->y << endl;
return this;
}
};