Программа отлично работает в сборке Debug, но не работает в сборке выпуска - PullRequest
1 голос
/ 27 августа 2010

Я столкнулся с проблемой в сборке выпуска Visual Studio

псевдокод приведен ниже

#include "lib/A/inc/A.h"

main()
{
  A a;
  a.f1();//this fails in release build and works fine in debug build
  a.f2();//this fails in release build and works fine in debug build
}

A получен из B, присутствующего в lib / B / inc / Bh

class A :public B
{
  virtual f2();
};

B имеет чисто виртуальную функцию f2 () и обычную функцию f1 ()

class B {
private:
  string name;
public:
  void f1();
  virtual void f2() = 0;
};

Я вступил в функцию f1 ().В этот момент этот указатель B имеет значение 0x0000000, и __vfptr недопустим.

Но в main () объект a действителен, и __vfptr также допустим.Есть идеи, почему это произошло в сборке релиза?

1 Ответ

0 голосов
/ 27 августа 2010

Посмотрите некоторые различия между сборкой отладки и выпуска и мои советы по поиску ошибки:

Распространенные причины ошибок в версии выпуска, отсутствующих в режиме отладки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...