在下新手一个,我写的一个基于对话框的程序,编译都通过了,但是一运行,立刻就占用9X%的CPU,连对话框都没弹出来,后来设置断点跟踪到.../MFC/SRC/DLGCORE.cpp文件中
// create modeless dialog
AfxHookWindowCreate(this);
--> hWnd = ::CreateDialogIndirect(hInst, lpDialogTemplate,
pParentWnd->GetSafeHwnd(), AfxDlgProc);
行时出现错误
弹出Debug Library对话框
dlgdata.cpp
line 43
有错
'关闭'后下面的Debug 窗口提示如下,告诉Detect memory leak?这是为什么呢
我用的链表和节点头文件是基于Template的,回合这个有关系吗?Loaded 'ntdll.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\kernel32.dll', no matching symbolic information found.
Loaded symbols for 'D:\WINDOWS\system32\MFC42D.DLL'
Loaded symbols for 'D:\WINDOWS\system32\MSVCRTD.DLL'
Loaded 'D:\WINDOWS\system32\gdi32.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\user32.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\advapi32.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\rpcrt4.dll', no matching symbolic information found.
Loaded symbols for 'D:\WINDOWS\system32\MFCO42D.DLL'
Loaded symbols for 'D:\WINDOWS\system32\MFCN42D.DLL'
Loaded symbols for 'D:\WINDOWS\system32\MSVCIRTD.DLL'
Loaded 'D:\WINDOWS\system32\imm32.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\lpk.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\usp10.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\mfc42loc.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\wsock32.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\ws2_32.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\msvcrt.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\ws2help.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\comctl32.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\MSCTF.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\nview.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\SHLWAPI.DLL', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\shell32.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\psapi.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\ole32.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\powrprof.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\version.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\olepro32.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\oleaut32.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\ddraw.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\dciman32.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.10.0_x-ww_f7fb5805\comctl32.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\MSCTFIME.IME', no matching symbolic information found.
Error: no data exchange control with ID 0x03ED.
Loaded 'D:\WINDOWS\system32\nviewimg.dll', no matching symbolic information found.
Loaded 'D:\WINDOWS\system32\MSIMTF.dll', no matching symbolic information found.
Detected memory leaks!
Dumping objects ->
strcore.cpp(118) : {63} normal block at 0x00421720, 45 bytes long.
 Data: <                > 01 00 00 00 04 00 00 00 20 00 00 00 CB CE CC E5 
{62} normal block at 0x00421780, 32 bytes long.
 Data: <                > FF FF FF FF CD CD CD CD CD CD CD CD CD CD CD CD 
Object dump complete.
The thread 0x11C has exited with code 3 (0x3).
The program 'H:\MFC\Debug\MFC.exe' has exited with code 3 (0x3).

解决方案 »

  1.   


    BOOL CMFCDlg::OnInitDialog()
    {
    CDialog::OnInitDialog(); // Add "About..." menu item to system menu. // IDM_ABOUTBOX must be in the system command range.
    ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
    ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE);
    if (pSysMenu != NULL)
    {
    CString strAboutMenu;
    strAboutMenu.LoadString(IDS_ABOUTBOX);
    if (!strAboutMenu.IsEmpty())
    {
    pSysMenu->AppendMenu(MF_SEPARATOR);
    pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
    }
    } // Set the icon for this dialog.  The framework does this automatically
    //  when the application's main window is not a dialog
    SetIcon(m_hIcon, TRUE); // Set big icon
    SetIcon(m_hIcon, FALSE); // Set small icon

    // TODO: Add extra initialization here
    //----------------------------我加的代码--------------------------------
    //initilize the variable
    // declare lists for buy and sell
    LinkedList<Deal> *B=new LinkedList<Deal>;
    LinkedList<Deal> *S=new LinkedList<Deal>;
    //LinkedList<Deal> B,S;
    Deal *M=new Deal;
    Deal *bf=new Deal;
    Deal *sf=new Deal;
    //Deal M,bf,sf;
    int i=0;
    // sort the List when there is a new come in.
    while(M->mode!='o' && M->mode!='O')
    {
    Input(*M); // input information
    if(M->mode=='B' || M->mode=='b' ) 
    {
    if (B->currPtr==NULL) B->InsertFront(*M);
    else B->InsertAfter(*M);
    Sort(*B); // sort the list Buy
    }
    if(M->mode=='S' || M->mode=='s' ) 
    {
    if (S->currPtr==NULL) S->InsertFront(*M);
    else S->InsertAfter(*M);
    Sort(*S); // sort the list Sell
    }
    cout<<" input succussfull!"<<endl;
    // goto Handle(B,S) if neccesary
    if (!S->ListEmpty() && !B->ListEmpty() ) //garentee the top of the two lists is not empty
    {
    bf=&(B->ListFront());
    sf=&(S->ListFront());
    if (bf->money>=sf->money) Handle(*B,*S); // go to handle the deal
    } //  if level
    } //while level
    delete S,B,M,bf,sf;
    //----------------------------- 我加的代码写完了 ------------------------------
    return TRUE;  // return TRUE  unless you set the focus to a control
    }
      

  2.   

    struct Deal
    {
    char mode; // mode buy or sell
    float money; // money accout
    long amount; // dealing amount
    };本来是在console下运行的,现在开始学MFC,于是拿出来练一下。
    看来差得还很远哪
      

  3.   

    LinkedList<Deal> *B=new LinkedList<Deal>;
    LinkedList<Deal> *S=new LinkedList<Deal>;
    不知道你的这个LinkedList是什么东东,假设是一个链表模板类吧,你的程序干什么?在初始化对话框的时候做了一大堆操作,最后声明的变量全删除了,什么也不留下,就算没有错误,想得到什么结果?
    最后,delete链表的时候,链表包含的数据能够在他的析构函数中得到释放吗?
    那个Input()又是什么东西?Handle()又是什么东西?感觉你是把console下的代码直接移植过来,没有搞清楚Windows的运行机制。