这里有源程序,请问哪位大侠知道错误可能在哪里?

yushenxiang 2012-09-04 05:01:27
设计的软件中需要进行产品的定义,最主要就是进行测量段的选择,然而实际操作时发现如果测量段选择较多时,如25个测量段时经常会出现错误,无法保存测量段数据,因此无法进行软件的正常使用。不止是哪里出现了问题?
void CImageMeasureView::OnSegmentSelect()
{
// TODO: 在此添加命令处理程序代码

m_SegmentSelectFlag = true;

CImageMeasureDoc* pDoc = GetDocument();

LPSTR lpDIB; // 指向DIB的指针
LPSTR lpDIBBits; // 指向DIB象素指针

lpDIB = (LPSTR) ::GlobalLock((HGLOBAL) pDoc->GetHDIB());
lpDIBBits = pDoc->GetDibImage()->FindDIBBits(lpDIB);

BeginWaitCursor();

pDoc->GetDibImage()->CornerExtract(lpDIBBits,pDoc->GetDibImage()->DIBWidth(lpDIB),pDoc->GetDibImage()->DIBHeight(lpDIB));

m_PointList1.clear();
m_SegmentList.clear();
int length = pDoc->GetDibImage()->m_PointList.size();
int x,y,m_ID;
Point pt;
for (int i=0; i<length; i++)
{
m_ID = pDoc->GetDibImage()->m_PointList[i].m_dotID;
x = pDoc->GetDibImage()->m_PointList[i].x;
y = pDoc->GetDibImage()->m_PointList[i].y;
pt.m_dotID = m_ID;
pt.x = x;
pt.y = y;
m_PointList1.push_back(pt);
}

int x1,x2,y1,y2;
for (int i=0; i<length-1; i++)
{
x1 = m_PointList1[i].x;
y1 = m_PointList1[i].y;
x2 = m_PointList1[i+1].x;
y2 = m_PointList1[i+1].y;
if (abs(x1-x2)>1 || abs(y1-y2)>1)
{
m_ContourNum++;
}
}
m_EachContourSize = new int[m_ContourNum+1];
m_EachContourSize[0] = 0;
m_ContourNum = 1;
for (int i=0; i<length-1; i++)
{
x1 = m_PointList1[i].x;
y1 = m_PointList1[i].y;
x2 = m_PointList1[i+1].x;
y2 = m_PointList1[i+1].y;
if (abs(x1-x2)>1 || abs(y1-y2)>1)
{
m_EachContourSize[m_ContourNum] = i+1;
m_ContourNum++;
}
}
m_EachContourSize[m_ContourNum] = length;
EndWaitCursor();
MessageBox(_T("请拖动鼠标框选测量曲线!"),_T("系统提示"), MB_ICONINFORMATION | MB_OK);
//m_segSelect = TRUE;
}
...全文
72 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuejiageng 2012-09-09
  • 打赏
  • 举报
回复
看看是不是m_PointList1数组的容量问题,可能是多了以后就溢出了。
傻X 2012-09-08
  • 打赏
  • 举报
回复
楼主,你DEBUG版本总有崩溃的地方吧,那个黄色箭头会指在那边的。然后你CallStack查查是哪个溢出的,你的问题就解决了
redleafe 2012-09-08
  • 打赏
  • 举报
回复
看看是不是m_PointList1的容量限制在25左右?

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧