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

那最后释放内存的时候,一定要把p指向刚开始分配内存的位置嘛?

那最后释放内存的时候,一定要把p指向刚开始分配内存的位置嘛?

正在回答

3 回答

#include <iostream>
#include <stdlib.h>
#include <string>
#include <time.h>
#include "Coordinate.h"
using namespace std;


int main()
{
	Coordinate coor[3];
	coor[0].m_iX=10;
	coor[0].m_iY=20;
	cout<< coor[0].m_iX<<" "<< coor[0].m_iY<<endl;
	Coordinate *p=new Coordinate[3];
	for (int i = 0;i < 3;i++)
	{
		p->m_iX = 30+i*10;
		p->m_iY = 40+i*10;
		cout<< p->m_iX<<" "<< p->m_iY<<endl;
		p++;
	}
	p-=3;//你可以试试把p-=3改成2,或者1,系统会提示"rumtime library"
	delete []p;
	p=NULL;

	cout<<"运行时间为"<<clock()<<"ms"<<endl;
	system("pause");
	return 0;
}
#include "Coordinate.h"
#include <iostream>
#include <stdlib.h>
#include <string>
#include <time.h>
using namespace std;

Coordinate::Coordinate()
{
	cout<<"Coordinate"<<endl;
}
Coordinate::~Coordinate()
{
	cout<<"~Coordinate"<<endl;
}
class Coordinate
{
public:
	Coordinate();
	~Coordinate();

	int m_iX;
	int m_iY;
};

如代码所示,是只有指回原来的位置才可以,不然会程序会崩溃

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

使用new申请内存才用释放内存,而这种申请内存方法有系统自动释放

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

Kevin_dgt 提问者

抱歉,我没说清楚。我问的就是使用指针的这种方式,视频中p指向发生变化了,那么到最后释放的时候,要一定要将指针指向之前定义的时候那个地址吗?
2016-09-19 回复 有任何疑惑可以回复我~

不用,这是栈方法,不是堆

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

Kevin_dgt 提问者

抱歉,我没说清楚。我问的就是使用指针的这种方式,视频中p指向发生变化了,那么到最后释放的时候,要一定要将指针指向之前定义的时候那个地址吗?
2016-09-19 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

那最后释放内存的时候,一定要把p指向刚开始分配内存的位置嘛?

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