qq_34023390 2016-03-28 12:03 采纳率: 0%
浏览 1537
已结题

用MFC的对话框载入摄像头并处理,运行接近10分钟后提示内存出错,指针都释放掉了。这是什么原因呀?

图片说明

相关的代码:
void CMFC_VedioDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
if(!pCapture)
{

    pCapture = cvCaptureFromCAM(0);
    pFrame = cvQueryFrame(pCapture);
    drawToDC(pFrame, IDC_Open);
}

SetTimer(IDC_BUTTON1, 10, NULL);

}

void CMFC_VedioDlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码
SetTimer(IDC_BUTTON2, 10, NULL);
}

void CMFC_VedioDlg::OnTimer(UINT_PTR nIDEvent)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
int i, j;
switch(nIDEvent)
{
case IDC_BUTTON1:
{

if(m_bOpenCamera)
{

            pFrame = cvQueryFrame(pCapture);
            drawToDC(pFrame, IDC_Open);
        }
        break;
    }

case IDC_BUTTON2:
    {


        IplImage* pGray = cvCreateImage(cvGetSize(pFrame), 8, 1);
        cvCvtColor(pFrame, pGray, CV_BGR2GRAY);

        cvCanny(pGray,pGray,100,255,3);

        drawToDC(pGray, IDC_DEAL);

        cvReleaseImage(&pGray);
        break;
    }

}


CDialogEx::OnTimer(nIDEvent);

}

void CMFC_VedioDlg::OnClose()
{
// TODO: 在此添加消息处理程序代码和/或调用默认值c

cvReleaseCapture(&pCapture);
cvReleaseImage(&pFrame);

KillTimer(IDC_BUTTON1);
KillTimer(IDC_BUTTON2);
CDialogEx::OnClose();

}

void CMFC_VedioDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
CDialogEx::OnOK();
}

PS:参考这个博客写的代码:http://www.cnblogs.com/leven20061001/archive/2012/10/17/2727865.html

运行10分钟程序就报错了,好郁闷呀!

  • 写回答

3条回答 默认 最新

  • lx624909677 2016-03-28 13:40
    关注

    你释放指针干嘛?指针只占4字节,蹦了要看蹦哪儿了,打开任务管理器,看下你的程序的内存是不是一直在增加

    评论

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料