Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Visual C++/MFC/WTL > CImage и access violation


Автор: ANTON_AL 25.1.2008, 18:30
Доброго дня!


Есть, к примеру, куча кода - например - приложение с одним окном и несколькими диалогами, неважно.


Есть в каком то диалоге, член типа CImage.
Код

class MyDialog: public CDialog
{
   public:
      /*a lot of code*/

   private:
      CImage m_img;
}


. . . кроме, как в этом диалоге, он больше нигде не используется. Причем, этот член класса ( m_img ),
даже не используется внутри этого диалога. Он просто объявлен, и всё.

Когда запускаю приложение, то где то в дебрях MFC вылетает Access Violation. 

Если этот член класса убрать. . .
Код

class MyDialog: public CDialog
{
   public:
      /*a lot of code*/

   private:
     // CImage m_img;  //Нету его
}

. . .то всё хорошо, и никаких ошибок нет, всё работает нормально.

В описанном случае использовались следующие настройки проекта:
Configuration Properties-->General-->Use of MFC = Use MFC in a Static Library 
Configuration Properties-->General-->Use of ATL  = Not Using ATL


Теперь, если поменять настройки на такие:
Configuration Properties-->General-->Use of MFC = Use MFC in a Static Library 
Configuration Properties-->General-->Use of ATL  = Static Link to ATL

. . . то всё хорошо, что с CImage, что без него.


Вот и вопрос - почему так происходит, и чем обусловлено такое поведение ??

Автор: dizzy1984 28.1.2008, 12:54
CImage m_img как и настройки скорее всего ни при чем, ищи ошибку в логике работы своего кода. Дело может быть в некорректной работе с памятью. Попробуй поотлаживать место рядом с возникновением того самого access violation.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)