В настоящее время вы работаете в автономном режиме; ожидается повторное подключение к Интернету

Описание ошибки времени выполнения R6025 в Visual C++

ВНИМАНИЕ! Данная статья переведена с использованием программного обеспечения Майкрософт для машинного перевода и, возможно, отредактирована посредством технологии Community Translation Framework (CTF). Корпорация Майкрософт предлагает вам статьи, обработанные средствами машинного перевода, отредактированные членами сообщества Майкрософт и переведенные профессиональными переводчиками, чтобы вы могли ознакомиться со всеми статьями нашей базы знаний на нескольких языках. Статьи, переведенные с использованием средств машинного перевода и отредактированные сообществом, могут содержать смысловое, синтаксические и (или) грамматические ошибки. Корпорация Майкрософт не несет ответственности за любые неточности, ошибки или ущерб, вызванные неправильным переводом контента или его использованием нашими клиентами. Подробнее об CTF можно узнать по адресу http://support.microsoft.com/gp/machine-translation-corrections/ru.

Эта статья на английском языке: 125749
Аннотация
Рассматривается проблема, которая может возникнуть при разработке программы. Если у вас по-прежнему возникают неполадки, похожие на эту статью, то это может быть другая проблема. Для поиска проблем, связанных с конкретной проблемы, пожалуйста, укажите название продукта в поиске Чтобы сузить результаты. Для решения подобных проблем обратитесь к разделу «подобные проблемы и решения» далее в этой статье.
Проблема
Программа C++ не выполняется и выдает следующее сообщение об ошибке во время выполнения.
Ошибка выполнения R6025
-вызов чисто виртуальной функции
Причина
Эта ошибка возникает, когда приложение косвенно вызывает чисто виртуальной функции-члена в контексте, где недопустимый вызов функции. В большинстве случаев компилятор обнаруживает и сообщает об ошибке при построении приложения. Но в зависимости от того, как написан код, иногда проблема обнаруживается только во время выполнения.

Эта ошибка возникает при косвенного вызова чистой виртуальной функции в контексте вызова конструктора или деструктора абстрактного базового класса. Это показано в примере кода ниже, а также некоторые дополнительные описания.
Решение
Вызов чистой виртуальной функции настолько Программная ошибка, необходимо найти вызова чистой виртуальной функции и код написан таким образом, он не вызывается.

Один из способов найти вызов к чисто виртуальной функции заключается в замене чисто виртуальной функции на реализацию, которая вызывает функцию Windows API DebugBreak. При использовании отладчика DebugBreak вызовет точки останова жестко. Код не будет выполняться в этой точке останова, можно просмотреть стек вызова, чтобы увидеть, где эта функция была вызвана.

Другой способ обнаружить вызова чистой виртуальной функции является задание точки останова в функции _purecall , которая находится в PureVirt.c. Разбиение по этой функции имеет преимущество директорий стека, так что можно проследить, что происходит.
Статус
Данное поведение является особенностью.
Дополнительная информация
Для получения дополнительных сведений обратитесь к странице «C во время выполнения ошибки R6002 через R6025» раздела «Ошибки построения» на следующем веб-узле Microsoft Developer Network (MSDN):Примечание. Ошибка R6025 не описанной в руководства или интерактивной справки, входящих в состав Visual C++ версии 2.x или ниже. Тем не менее он кратко обсуждается в часть 3 из файла Readme.wri, поставляемые с Visual C++ версии 2.0.

Пример кода

   /* Compile options needed: none   */    class A;   void fcn( A* );   class A   {   public:       virtual void f() = 0;       A() { fcn( this ); }   };   class B : A   {       void f() { }   };   void fcn( A* p )   {       p->f();   }   // The declaration below invokes class B's constructor, which   // first calls class A's constructor, which calls fcn. Then   // fcn calls A::f, which is a pure virtual function, and   // this causes the run-time error. B has not been constructed   // at this point, so the B::f cannot be called. You would not   // want it to be called because it could depend on something   // in B that has not been initialized yet.   B b;   void main()   {   }				
Схожие неполадки и их решения
Если по-прежнему возникает проблема, похожая на описанную в этой статье, он может быть другая проблема. Дополнительные сведения о подобных проблемах и их решении щелкните приведенные ниже номера статей базы знаний Майкрософт:
240437 Ошибка выполнения Money: "R6025 — вызов чистой виртуальной функции"
308260 Устранение ошибок сценария в Internet Explorer 6 и Internet Explorer 7 на компьютерах под управлением Windows 2000, под управлением Windows XP, на базе Windows Server 2003 или под управлением Windows Vista
267572 WD2000: Сообщение об ошибке: «Ошибка выполнения '5'» при запуске Word
170409 SBFM97: Импорт данных Quickbooks ошибки во время выполнения MS Visual C++
309299 Ошибка выполнения при просмотре некоторых веб-страниц
8,00 c 8.00 9,00

Внимание! Эта статья переведена автоматически

Свойства

Номер статьи: 125749 — последний просмотр: 06/12/2016 05:43:00 — редакция: 14.0

Microsoft Visual C++ 2008 Express Edition, Microsoft Visual C++ 2005 Express Edition, Microsoft Visual C++ .NET 2003 Standard Edition, Microsoft Visual C++ .NET 2002 Standard Edition, Microsoft Visual C++ 5.0 Professional Edition, Microsoft Visual C++ 5.0 Enterprise Edition, Microsoft Visual C++ 2.0 Professional Edition, Microsoft Visual C++ 1.5 Professional Edition

  • kbresolve kbtshoot kbcompiler kbcpponly kberrmsg kbprb kbmt KB125749 KbMtru
Отзывы и предложения