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字节,蹦了要看蹦哪儿了,打开任务管理器,看下你的程序的内存是不是一直在增加

    评论

报告相同问题?

悬赏问题

  • ¥30 vmware exsi重置后登不上
  • ¥15 易盾点选的cb参数怎么解啊
  • ¥15 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题
  • ¥20 yolov5自定义Prune报错,如何解决?
  • ¥15 电磁场的matlab仿真
  • ¥15 mars2d在vue3中的引入问题
  • ¥50 h5唤醒支付宝并跳转至向小荷包转账界面