在下新手一个,我写的一个基于对话框的程序,编译都通过了,但是一运行,立刻就占用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).
// 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).
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
}
{
char mode; // mode buy or sell
float money; // money accout
long amount; // dealing amount
};本来是在console下运行的,现在开始学MFC,于是拿出来练一下。
看来差得还很远哪
LinkedList<Deal> *S=new LinkedList<Deal>;
不知道你的这个LinkedList是什么东东,假设是一个链表模板类吧,你的程序干什么?在初始化对话框的时候做了一大堆操作,最后声明的变量全删除了,什么也不留下,就算没有错误,想得到什么结果?
最后,delete链表的时候,链表包含的数据能够在他的析构函数中得到释放吗?
那个Input()又是什么东西?Handle()又是什么东西?感觉你是把console下的代码直接移植过来,没有搞清楚Windows的运行机制。