代码如下
--------------------------------------------------------------------
RE_GPointCloud *point_rotate= new RE_GPointCloud;
if(!m_pcld->m_pntsSet.empty())
{
int i=0;
Iterator pntite=m_pcld->m_pntsSet.begin();
for (pntite,i;(pntite !=m_pcld->m_pntsSet.end()) && (i<n);++pntite,++i)
{
double P,Q,R;
P=(*pntite)->x();
Q=(*pntite)->y();
R=(*pntite)->z();
//把点云单个点放入一个aa的矢量中
Vector3D aa(P,Q,R);
Vector3D v;
v.set(0.0,0.0,0.0);
//计算单个点和旋转矩阵相乘得到一个矢量
v=aa*zy_axis;//利用在matrix中重载的运算符进行计算一个矢量和一个矩阵相乘
a[i][0]=v.x();
a[i][1]=v.y();
a[i][2]=v.z();
GPointInCloud *pzy=new GPointInCloud;
//pzy->set(b);
pzy->set(a[i][0],a[i][1],a[i][2]);
CString str1;
str1.Format("%f", a[i][0]);
AfxMessageBox(str1);
point_rotate->addPoint(pzy);//在这儿第四次发生冲突,是怎么回事啊 、、、
delete pzy;
addpoint()函数如下
---------------------------------------------------------------------------------------------
bool RE_GPointCloud::addPoint(GPointInCloud* _point, bool _copypnt)
{
if(NULL == _point)
{
return false;
}
bool validcloud = isValid();//在这个位置出现冲突。。。。
if(true == _copypnt)
{
m_pntsSet.push_back(_point->clone());
}
else
{
m_pntsSet.push_back(_point);
}
//update bounding box
double xMin, xMax, yMin, yMax, zMin, zMax;
m_bbox.getBox(xMin, yMin, zMin, xMax, yMax, zMax);
if(_point->x()>xMax)
{
xMax = _point->x();
}
if(_point->x()<xMin)
{
xMin = _point->x();
}
if(_point->y()>yMax)
{
yMax = _point->y();
}
if(_point->y()<yMin)
{
yMin = _point->y();
}
--------------------------------------------------------------------------------------
isvalid 代码如下
bool RE_GPointCloud::isValid() const
{
if(0 == m_pntsSet.size())
{
return false;
}
else
{
return true;
}
}
———————————————————————————————————————————————————————
求解释 如何解决
在下感谢了
------解决方案--------------------------------------------------------
0xC0000005这个位置一般就是内存问题,楼主多设置几个断点跟踪一下,看一下变量什么的,估计是使用了未定义的内存导致的