当前位置: 代码迷 >> VC >> 中的 0x009cbc7a (RE_GAL.dll) 处未处理的错误: 0xC0000005: 读取位置 0x0000000c 时发生位置时发生冲突
  详细解决方案

中的 0x009cbc7a (RE_GAL.dll) 处未处理的错误: 0xC0000005: 读取位置 0x0000000c 时发生位置时发生冲突

热度:5649   发布时间:2013-02-25 00:00:00.0
中的 0x009cbc7a (RE_GAL.dll) 处未处理的异常: 0xC0000005: 读取位置 0x0000000c 时发生位置时发生冲突
代码如下
--------------------------------------------------------------------
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这个位置一般就是内存问题,楼主多设置几个断点跟踪一下,看一下变量什么的,估计是使用了未定义的内存导致的
  相关解决方案