class CScene
{
public:
bool GenerateData();
CTarget* m_pTarget;
int NumofTargets;
}
CScene::CScene()
{
m_pTarget=NULL;
}CScene::~CScene()
{
delete[] m_pTarget;
}bool CScene::GenerateData()
{
//请问这样修改类成员的大小对吗?会内存泄露吗?如果不对,想更改成员变量指针大小应该怎样做呢,请指点。
NumofTargets=...;
delete[] m_pTarget;
m_pTarget=new CTarget[NumofTargets];
return true;
}
这个简单的问题困扰我好久了,请大家赐教!感激!
{
public:
bool GenerateData();
CTarget* m_pTarget;
int NumofTargets;
}
CScene::CScene()
{
m_pTarget=NULL;
}CScene::~CScene()
{
delete[] m_pTarget;
}bool CScene::GenerateData()
{
//请问这样修改类成员的大小对吗?会内存泄露吗?如果不对,想更改成员变量指针大小应该怎样做呢,请指点。
NumofTargets=...;
delete[] m_pTarget;
m_pTarget=new CTarget[NumofTargets];
return true;
}
这个简单的问题困扰我好久了,请大家赐教!感激!
{
if (m_pTarget)
{
delete[] m_pTarget;
m_pTarget = NULL;
}
}bool CScene::GenerateData()
{
//请问这样修改类成员的大小对吗?会内存泄露吗?如果不对,想更改成员变量指针大小应该怎样做呢,请指点。
NumofTargets=...;
if (m_pTarget)
{
delete[] m_pTarget;
m_pTarget = NULL;
}
m_pTarget=new CTarget[NumofTargets];
return true;
}
{
//请问这样修改类成员的大小对吗?会内存泄露吗?如果不对,想更改成员变量指针大小应该怎样做呢,请指点。
NumofTargets=...;
if (m_pTarget)
{
delete[] m_pTarget;
m_pTarget = NULL;
}
m_pTarget = new CTarget[NumofTargets];
if (!m_pTarget)
{
return false;
}
return true;
}
if (m_pTarget)
{
delete[] m_pTarget;
m_pTarget = NULL;
}
---------------------
不需要这样吧, 如果m_pTarget为空
delete[] m_pTarget 并没有错
只有在需要调用m_pTarget对象方法时才需要判断m_pTarget 是否为空,如
if( m_pTarget )
{
m_pTarget->Release();
}
在删除一个指针前应该对该指针进行判断吧,删除一个空指针也比较危险的应该。
m_pTarget = CTarget*realloc(m_pTarget,sizeof(CTarget) * NumofTargets);
请教一下“一般这么写的,可能会析构两次”是什么意思啊 ?是不是我应该先判断一下是不是指针为空,如果不为空,再delete[],然后赋新的大小?
{
delete[] m_pTarget;
}这种方式不一定可行,又是也会出现错误,比如m_pTarget=0Xccccccccc时就会出错