写了段程序,编译的时候没有报错,在运行的时候弹出了"0x7c9212b0"指令引起的"0xcccccccc"内存,该内存不能为"read"的错误,请各位高手帮帮忙,要怎么解决呢?谢谢啦
代码如下:void CComTest1View::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
PROCESS_INFORMATION pi;                                   
STARTUPINFO si;           
si.cb=sizeof(STARTUPINFO);
si.lpReserved = NULL;
si.lpReserved2 = NULL;
si.cbReserved2 = 0;
si.lpDesktop = NULL;
si.dwFlags = 0; CreateProcess(_T("D:\\Program Files\\CCleaner\\CCleaner.exe"),
NULL,
NULL,
NULL,
FALSE,
0,
NULL,
NULL,
&si,
&pi); CView::OnLButtonDown(nFlags, point);
}

解决方案 »

  1.   

    系统里的结构都一定要清空,因为Debug方式的代码可能会用0xcccccccc填充堆栈。    STARTUPINFO si;
        PROCESS_INFORMATION pi;    ZeroMemory( &si, sizeof(si) );
        si.cb = sizeof(si);
        ZeroMemory( &pi, sizeof(pi) );
        ......
      

  2.   

    createprocess第一个参数请传一个buffer进去,不要这样使用。
      

  3.   

        STARTUPINFO si;
        PROCESS_INFORMATION pi;    ZeroMemory( &si, sizeof(si) );
        si.cb = sizeof(si);
        CreateProcess(NULL,
    _T("D:\\Program Files\\CCleaner\\CCleaner.exe"),
            NULL,
            NULL,
            FALSE,
            0,
            NULL,
            NULL,
            &si,
            &pi);