2016-05-02 5 views
-1

Когда я создаю новый диалог и вызываю DoModel на нем. Я получаю следующее утверждение отладки.Ошибка отладки в mfc140ud.dll

Код

if (m_pWatchDogDialog->WatchDogServer().CurrentUserStatus() == CServerLink::AWAY) 
       { 
        CString msg("Requested user is away"); 
        m_pWatchDogDialog->WatchDogServer().SendUserMessage(m_UserKey, msg); 
       } 
      else 
      { 
       AcceptFile *dlg = new AcceptFile(); 
       dlg->DoModal(); // error is throwing up here 
      } 

Ошибка, как показано ниже

enter image description here

The Assertion is at the debug point as shown in image in dlgcore.cpp file

+0

И когда вы нажмете «Повторить», что произойдет? Вы должны были быть взяты в строку в библиотеке времени выполнения, которая вызывает это утверждение. – PaulMcKenzie

+0

@PaulMcKenzie: afxwin1.inl является частью реализации MFC, а не временем выполнения. Кроме этого, да, очевидно, нажмите * Повторить *, как предлагает диалог утверждения ... Прекратите быть беспомощным. Кроме того, вы должны использовать автоматическую продолжительность хранения для объекта 'AcceptFile'. Нет причин для «нового», если вы не хотите тренировать навыки отладки памяти. Кроме того, не игнорируйте вывод отладки при завершении приложения. Это ** говорит вам, что вы просачиваете память. – IInspectable

+0

Как я уже сказал, я изменил свой код на автоматическое хранилище для моего объекта AcceptFile, но снова получаю ту же ошибку –

ответ

0

Если предположить, что AcceptFile наследует от CDialog, вероятно, вы можете предотвратить отладочный утверждение ТНЕ расширение конструктора AcceptFile с вызовом CDialog constuctor с lpszTemplateName аргумент. Например:

class AcceptFile : public CDialog 
{ 
public: 
    AcceptFile(LPCTSTR lpszTemplateName, CWnd* pParentWnd = NULL) 
     : CDialog(lpszTemplateName, pParentWnd) 
    { 
     // your code here 
    } 

// other stuff 
}; 
Смежные вопросы