ciao.
Ho le seguenti funzioni:

codice:
void CMaterialSkin::UpdateAnimation(long nTime)
{	
	D3DXVECTOR4* pmatrices = new D3DXVECTOR4[MAXBONES*3]; 
	m_pSkeleton->updateAnimation(nTime, pmatrices);
	int nCountvfloat4 = sizeof(*pmatrices)/sizeof(*pmatrices[0]);; 
	HRESULT hr = m_pMatrices->SetRawValue(*pmatrices, 0, MAXBONES*3* sizeof(D3DXVECTOR4));
	delete[] pmatrices;

	}

}
e questa chiamata dalla precedente:
codice:
void CSkeleton::updateAnimation(int frame, D3DXVECTOR4* pmatrices)
{	
	for(int i = 0 ; i < GetBoneCount(); i++)
	{
		CBone* pb = GetBone(i);
		CBone* pbParent = GetBone(pb->m_nIdParent);

		D3DXMATRIX pmxAnimation = pb->getAnimationMatrix(0, 0);
		if(D3DXMatrixIsIdentity(&pmxAnimation))
			pmxAnimation *= pb->getMatrixLocal();

		pb->SetFinalMatrix( pmxAnimation /** pb->getMatrixLocal()*/);
		if (pb->m_nIdParent >= 0)
			pb->SetFinalMatrix(pb->getBoneFinalMatrix() * pbParent->getBoneFinalMatrix());
	
	}
    for(int i = 0 ; i < GetBoneCount(); i++)
	{
		CBone* pb = GetBone(i);
		CBone* pbParent = GetBone(pb->m_nIdParent);
		
		if(pbParent != NULL)
		{
			pb->SetFinalMatrix(pb->getInvBinMatrix() * pb->getBoneFinalMatrix()* pbParent->getBoneFinalMatrix());
			D3DXMATRIX m = pb->getBoneFinalMatrix();		
			pmatrices[i*3 +0] = D3DXVECTOR4(m._11, m._21,m._31, m._41);
			pmatrices[i*3 +1] = D3DXVECTOR4(m._12, m._22, m._32, m._42);
			pmatrices[i*3 +2] = D3DXVECTOR4(m._13, m._23, m._33, m._43);
		}
		else
		{
			pb->SetFinalMatrix( pb->getInvBinMatrix() * pb->getBoneFinalMatrix());
			D3DXMATRIX m = pb->getBoneFinalMatrix();		
			pmatrices[i*3 +0] = D3DXVECTOR4(m._11, m._21,m._31, m._41);
			pmatrices[i*3 +1] = D3DXVECTOR4(m._12, m._22, m._32, m._42);
			pmatrices[i*3 +2] = D3DXVECTOR4(m._13, m._23, m._33, m._43);
		}
	}
	
}
il problema è che queste due funzioni mi generano un sacco di leack.
Non riesco a capire cosa devo cancellare col delete e sono sicuro che il problema è in queste due funzioni perchè eliminandole non vengono generate schifezze.
grazie.