Код ошибки 1073740940 при обновлении антивируса доктор веб

#1

Kord

    Newbie

  • Posters
  • 30 Сообщений:

Отправлено 06 Ноябрь 2021 — 15:34

Здравструйте. Есть ПК с Windows 10 v1903 и DrWeb Security Space 12, у которого нет (и не будет) подключения к интернету. Обновления для Доктора скачиваются с других ПК с помощью файлов drwupsrv.exe и drwebzones.xml по команде:
drwupsrv.exe -c download -r «папка» -s90 —zones=drwzones.xml —key-file «файл ключа»

Файлы drwupsrv.exe и drwebzones.xml используются всегда самые свежие.
На протяжении нескольких лет данная схема всегда работала без сбоев, обновлялся с частотой раз в месяц, 2 дня назад сделал крайнее обновление — все хорошо. Сегодня понадобилось с помощью Акрониса восстановить раздел с Windows из образа, сделанного аж в 2019 году. Теперь Доктор образца 2019 года при обновлении выдаёт код ошибки: -1073740940. Если в настройках включить только обновление вирусных баз, то обновление проходит успешно.

Я почти на 100% уверен, что проблему можно решить путем переустановки Доктора из свежего дистрибутива, но хотелось бы понять в чем причина возникновения этой ошибки и как можно обновить старые модули Доктора без переустановки :)

PS: логи с этой машины скинуть весьма проблематично, но если это необходимо — напишите, сделаю

Сообщение было изменено Kord: 06 Ноябрь 2021 — 15:35

  • Наверх


#2


Dmitry_rus

Dmitry_rus

    Guru

  • Helpers
  • 3 518 Сообщений:

Отправлено 06 Ноябрь 2021 — 17:12

Так, в качестве предположений (без логов гадать бессмысленно):

1. Прочекайте файловую систему на предмет ошибок.

2. Не исключено, что структура репозитория со времен 2019 г. несколько изменилась, и апдейтер не совсем корректно с ней работает.

  • Наверх


#3


Kord

Kord

    Newbie

  • Posters
  • 30 Сообщений:

Отправлено 06 Ноябрь 2021 — 17:24

Нашёл у себя в закромах базы от 26.02.2021, попробовал с них обновиться и обновление прошло успешно! Перезагружаю ПК, как того попросил Доктор, пробую обновиться со свежих баз: обновление выполнено успешно!

Для чистоты эксперимента попробовал ещё раз восстановить образ системы 2019 года: все тоже самое — обновление базами 04.11.2021 выдаёт ошибку, обновление базами 26.02.2021 проходит успешно.

Попробовал восстановить образ системы с Windows 7 SP1 (без обновлений) тоже 2019 года, устанавливаю обновление Windows для поддержки SHA256 и Доктор обновляется свежими базами без ошибок:)

  • Наверх


#4


Kord

Kord

    Newbie

  • Posters
  • 30 Сообщений:

Отправлено 06 Ноябрь 2021 — 17:34

Так, в качестве предположений (без логов гадать бессмысленно):
1. Прочекайте файловую систему на предмет ошибок.
2. Не исключено, что структура репозитория со времен 2019 г. несколько изменилась, и апдейтер не совсем корректно с ней работает.

1. Проверил: с файловой системой и самим HDD все в порядке 100%, Акронис использую один и то же уже лет 8, конкретно эта версия не подводила ни разу, да и образ раздела посекторный.
2. Вполне возможно что так, но на Windows 7 Доктор обновляется с новых баз без проблем

Какие именно логи нужны? dwupdater.log или ещё что-то?

  • Наверх


#5


VVS

VVS

    The Master

  • Moderators
  • 19 205 Сообщений:

Отправлено 06 Ноябрь 2021 — 17:40

Какие именно логи нужны? dwupdater.log или ещё что-то?

Для начала именно его.

меня вот что возмутило.  что даже не начинают толком диалог сразу дампы…… © alehas777
———————————
Антивирус это как ремень безопасности — всего лишь увеличивает шансы выжить или получить менее тяжкую травму при аварии.
Есть, однако, категория людей, которые рассматривают средства безопасности как ауру неуязвимости. © basid

  • Наверх


#6


Kord

Kord

    Newbie

  • Posters
  • 30 Сообщений:

Отправлено 06 Ноябрь 2021 — 19:09

Какие именно логи нужны? dwupdater.log или ещё что-то?

Для начала именно его.

Дата: 07.11.2021

1:53 — попытка обновления базами от 04.11.2021 (ошибка)

1:55 — обновление базами от 26.02.2021 (успешно)

Перезагрузка ПК

1:58 —  обновление базами от 04.11.2021 (успешно)

Перезагрузка ПК

Прикрепленные файлы:

  • Прикрепленный файл
     log.rar   47,3К
      3 Скачано раз

  • Наверх


#7


Dmitry_rus

Dmitry_rus

    Guru

  • Helpers
  • 3 518 Сообщений:

Отправлено 06 Ноябрь 2021 — 19:51

При обновлении в 1:53:07 старый апдейтер падает на полпути, затем перезапускается и начинает 2-ю фазу (постапдейт), не завершив собственно апдейт. Возможно, дебажные логи апдейтера смогут как-то пролить свет.

20211107 01:53:07 [INF] [ Loader ] Download file versions.xml from C:\DrWeb-Updates\Updates\versions.xml to C:\ProgramData\Doctor Web\Updater\repo\versions.xml.newer
20211107 01:53:07 [INF] [ Loader ] Timestamp zone is 20211103183753
20211107 01:53:07 [INF] [ Loader ] Zone C:\DrWeb-Updates\Updates has valid timestamp for update
20211107 01:53:07 [INF] [ Loader ] Download file certificate.xml from C:\DrWeb-Updates\Updates\certificate.xml to C:\ProgramData\Doctor Web\Updater\repo\certificate.xml.newer
20211107 01:53:07 [INF] [ Loader ] Download file 90\products.xml from C:\DrWeb-Updates\Updates\90\products.xml to C:\ProgramData\Doctor Web\Updater\repo\90\products.xml.newer
Updater version: 12.0.12.08020, x64, Time : 07 November 2021  01:53:07
Computer name  : PC, User name : WORKGROUP\PC$
Platform       : Microsoft Windows 10 Professional  18362, x64, Locale : 1049
Command line   :  -c postupdate --progress-to-console --verbosity=info --dws9 --interactive --host-guid=a5564af6-5497-4ec3-9d2e-a8439d75ddc2 --coutname=7C49CEAF1D257329
Copyright (c) Doctor Web, Ltd., 1992-2019
=============================================================================
20211107 01:53:07 [INF] [  Main  ] Logfile: C:\ProgramData\Doctor Web\Logs\dwupdater.log
20211107 01:53:07 [INF] [  Main  ] Updater Run as interactive application [ PID: 5724 ]

  • Наверх


#8


Kord

Kord

    Newbie

  • Posters
  • 30 Сообщений:

Отправлено 06 Ноябрь 2021 — 20:07

При обновлении в 1:53:07 старый апдейтер падает на полпути, затем перезапускается и начинает 2-ю фазу (постапдейт), не завершив собственно апдейт. Возможно, дебажные логи апдейтера смогут как-то пролить свет.

Dmitry_rus, спасибо, что посмотрели.
В принципе для себя я нашёл выход из ситуации (сначала обновиться февральскими базами, затем — актуальными). Думаю, разработчикам будет не особо интересно тратить время на выяснение причин падения Updater’a двухлетней свежести на устаревшей ОС. Но если что, могу собрать дебажные логи :)

  • Наверх


#9


Afalin

Afalin

    Guru

  • Dr.Web Staff
  • 5 655 Сообщений:

Отправлено 07 Ноябрь 2021 — 12:44

Если там падение с heap corruption на этом products.xml, то совсем не интересно.

Семь раз отрежь – один раз проверь

  • Наверх


#10


SergSG

SergSG

    The Master

  • Posters
  • 14 420 Сообщений:

Отправлено 10 Ноябрь 2021 — 15:59

STATUS_FAILED_STACK_SWITCH

Структура зона-репы менялась и старый апдейтер об этом не в курсе.

  • Наверх


#11


Kord

Kord

    Newbie

  • Posters
  • 30 Сообщений:

Отправлено 10 Ноябрь 2021 — 21:52

STATUS_FAILED_STACK_SWITCH
Структура зона-репы менялась и старый апдейтер об этом не в курсе.

Тогда, по идее, апдейтер должен падать на любой ОС, но на Windows 7 проблем нет…

  • Наверх


#12


SergSG

SergSG

    The Master

  • Posters
  • 14 420 Сообщений:

Отправлено 10 Ноябрь 2021 — 22:54

STATUS_FAILED_STACK_SWITCH
Структура зона-репы менялась и старый апдейтер об этом не в курсе.

Тогда, по идее, апдейтер должен падать на любой ОС, но на Windows 7 проблем нет…

Это код системной ошибки — винда подавилась апдейтером. И падать, по идее, может на любой ОС, но могут быть и свои нюансы.

  • Наверх


#13


Afalin

Afalin

    Guru

  • Dr.Web Staff
  • 5 655 Сообщений:

Отправлено 11 Ноябрь 2021 — 09:49

В зависимости от положения звёзд оно может и не упасть.

Семь раз отрежь – один раз проверь

  • Наверх


#14


shonyv

shonyv

    Newbie

  • Posters
  • 81 Сообщений:

Отправлено 17 Ноябрь 2021 — 09:12

Сегодня не хочет доктор обновляться, все по инструкции сделал и ноль результата! А вот в панели управления не восстанавливается пишет ошибка 46

88c290627a83.gif В камень стрелять, стрелы терять!

  • Наверх


#15


VVS

VVS

    The Master

  • Moderators
  • 19 205 Сообщений:

Отправлено 17 Ноябрь 2021 — 09:24

Сегодня не хочет доктор обновляться, все по инструкции сделал и ноль результата! А вот в панели управления не восстанавливается пишет ошибка 46

Создайте новую тему, в которую сразу же приложите отчёт доктора.
Тема закрыта.
Модератор.

меня вот что возмутило.  что даже не начинают толком диалог сразу дампы…… © alehas777
———————————
Антивирус это как ремень безопасности — всего лишь увеличивает шансы выжить или получить менее тяжкую травму при аварии.
Есть, однако, категория людей, которые рассматривают средства безопасности как ауру неуязвимости. © basid

  • Наверх


#1

Kord

    Newbie

  • Posters
  • 30 Сообщений:

Отправлено 06 Ноябрь 2021 — 15:34

Здравструйте. Есть ПК с Windows 10 v1903 и DrWeb Security Space 12, у которого нет (и не будет) подключения к интернету. Обновления для Доктора скачиваются с других ПК с помощью файлов drwupsrv.exe и drwebzones.xml по команде:
drwupsrv.exe -c download -r «папка» -s90 —zones=drwzones.xml —key-file «файл ключа»

Файлы drwupsrv.exe и drwebzones.xml используются всегда самые свежие.
На протяжении нескольких лет данная схема всегда работала без сбоев, обновлялся с частотой раз в месяц, 2 дня назад сделал крайнее обновление — все хорошо. Сегодня понадобилось с помощью Акрониса восстановить раздел с Windows из образа, сделанного аж в 2019 году. Теперь Доктор образца 2019 года при обновлении выдаёт код ошибки: -1073740940. Если в настройках включить только обновление вирусных баз, то обновление проходит успешно.

Я почти на 100% уверен, что проблему можно решить путем переустановки Доктора из свежего дистрибутива, но хотелось бы понять в чем причина возникновения этой ошибки и как можно обновить старые модули Доктора без переустановки :)

PS: логи с этой машины скинуть весьма проблематично, но если это необходимо — напишите, сделаю

Сообщение было изменено Kord: 06 Ноябрь 2021 — 15:35

  • Наверх

#2


Dmitry_rus

Dmitry_rus

    Guru

  • Helpers
  • 3 294 Сообщений:

Отправлено 06 Ноябрь 2021 — 17:12

Так, в качестве предположений (без логов гадать бессмысленно):

1. Прочекайте файловую систему на предмет ошибок.

2. Не исключено, что структура репозитория со времен 2019 г. несколько изменилась, и апдейтер не совсем корректно с ней работает.

  • Наверх

#3


Kord

Kord

    Newbie

  • Posters
  • 30 Сообщений:

Отправлено 06 Ноябрь 2021 — 17:24

Нашёл у себя в закромах базы от 26.02.2021, попробовал с них обновиться и обновление прошло успешно! Перезагружаю ПК, как того попросил Доктор, пробую обновиться со свежих баз: обновление выполнено успешно!

Для чистоты эксперимента попробовал ещё раз восстановить образ системы 2019 года: все тоже самое — обновление базами 04.11.2021 выдаёт ошибку, обновление базами 26.02.2021 проходит успешно.

Попробовал восстановить образ системы с Windows 7 SP1 (без обновлений) тоже 2019 года, устанавливаю обновление Windows для поддержки SHA256 и Доктор обновляется свежими базами без ошибок:)

  • Наверх

#4


Kord

Kord

    Newbie

  • Posters
  • 30 Сообщений:

Отправлено 06 Ноябрь 2021 — 17:34

Так, в качестве предположений (без логов гадать бессмысленно):
1. Прочекайте файловую систему на предмет ошибок.
2. Не исключено, что структура репозитория со времен 2019 г. несколько изменилась, и апдейтер не совсем корректно с ней работает.

1. Проверил: с файловой системой и самим HDD все в порядке 100%, Акронис использую один и то же уже лет 8, конкретно эта версия не подводила ни разу, да и образ раздела посекторный.
2. Вполне возможно что так, но на Windows 7 Доктор обновляется с новых баз без проблем

Какие именно логи нужны? dwupdater.log или ещё что-то?

  • Наверх

#5


VVS

VVS

    The Master

  • Moderators
  • 18 983 Сообщений:

Отправлено 06 Ноябрь 2021 — 17:40

Какие именно логи нужны? dwupdater.log или ещё что-то?

Для начала именно его.

меня вот что возмутило.  что даже не начинают толком диалог сразу дампы…… © alehas777
———————————
Антивирус это как ремень безопасности — всего лишь увеличивает шансы выжить или получить менее тяжкую травму при аварии.
Есть, однако, категория людей, которые рассматривают средства безопасности как ауру неуязвимости. © basid

  • Наверх

#6


Kord

Kord

    Newbie

  • Posters
  • 30 Сообщений:

Отправлено 06 Ноябрь 2021 — 19:09

Какие именно логи нужны? dwupdater.log или ещё что-то?

Для начала именно его.

Дата: 07.11.2021

1:53 — попытка обновления базами от 04.11.2021 (ошибка)

1:55 — обновление базами от 26.02.2021 (успешно)

Перезагрузка ПК

1:58 —  обновление базами от 04.11.2021 (успешно)

Перезагрузка ПК

Прикрепленные файлы:

  • Прикрепленный файл
     log.rar   47,3К
      3 Скачано раз
  • Наверх

#7


Dmitry_rus

Dmitry_rus

    Guru

  • Helpers
  • 3 294 Сообщений:

Отправлено 06 Ноябрь 2021 — 19:51

При обновлении в 1:53:07 старый апдейтер падает на полпути, затем перезапускается и начинает 2-ю фазу (постапдейт), не завершив собственно апдейт. Возможно, дебажные логи апдейтера смогут как-то пролить свет.

20211107 01:53:07 [INF] [ Loader ] Download file versions.xml from C:DrWeb-UpdatesUpdatesversions.xml to C:ProgramDataDoctor WebUpdaterrepoversions.xml.newer
20211107 01:53:07 [INF] [ Loader ] Timestamp zone is 20211103183753
20211107 01:53:07 [INF] [ Loader ] Zone C:DrWeb-UpdatesUpdates has valid timestamp for update
20211107 01:53:07 [INF] [ Loader ] Download file certificate.xml from C:DrWeb-UpdatesUpdatescertificate.xml to C:ProgramDataDoctor WebUpdaterrepocertificate.xml.newer
20211107 01:53:07 [INF] [ Loader ] Download file 90products.xml from C:DrWeb-UpdatesUpdates90products.xml to C:ProgramDataDoctor WebUpdaterrepo90products.xml.newer
Updater version: 12.0.12.08020, x64, Time : 07 November 2021  01:53:07
Computer name  : PC, User name : WORKGROUPPC$
Platform       : Microsoft Windows 10 Professional  18362, x64, Locale : 1049
Command line   :  -c postupdate --progress-to-console --verbosity=info --dws9 --interactive --host-guid=a5564af6-5497-4ec3-9d2e-a8439d75ddc2 --coutname=7C49CEAF1D257329
Copyright (c) Doctor Web, Ltd., 1992-2019
=============================================================================
20211107 01:53:07 [INF] [  Main  ] Logfile: C:ProgramDataDoctor WebLogsdwupdater.log
20211107 01:53:07 [INF] [  Main  ] Updater Run as interactive application [ PID: 5724 ]

  • Наверх

#8


Kord

Kord

    Newbie

  • Posters
  • 30 Сообщений:

Отправлено 06 Ноябрь 2021 — 20:07

При обновлении в 1:53:07 старый апдейтер падает на полпути, затем перезапускается и начинает 2-ю фазу (постапдейт), не завершив собственно апдейт. Возможно, дебажные логи апдейтера смогут как-то пролить свет.

Dmitry_rus, спасибо, что посмотрели.
В принципе для себя я нашёл выход из ситуации (сначала обновиться февральскими базами, затем — актуальными). Думаю, разработчикам будет не особо интересно тратить время на выяснение причин падения Updater’a двухлетней свежести на устаревшей ОС. Но если что, могу собрать дебажные логи :)

  • Наверх

#9


Afalin

Afalin

    Guru

  • Dr.Web Staff
  • 5 496 Сообщений:

Отправлено 07 Ноябрь 2021 — 12:44

Если там падение с heap corruption на этом products.xml, то совсем не интересно.

Семь раз отрежь – один раз проверь

  • Наверх

#10


SergSG

SergSG

    The Master

  • Posters
  • 14 381 Сообщений:

Отправлено 10 Ноябрь 2021 — 15:59

STATUS_FAILED_STACK_SWITCH

Структура зона-репы менялась и старый апдейтер об этом не в курсе.

  • Наверх

#11


Kord

Kord

    Newbie

  • Posters
  • 30 Сообщений:

Отправлено 10 Ноябрь 2021 — 21:52

STATUS_FAILED_STACK_SWITCH
Структура зона-репы менялась и старый апдейтер об этом не в курсе.

Тогда, по идее, апдейтер должен падать на любой ОС, но на Windows 7 проблем нет…

  • Наверх

#12


SergSG

SergSG

    The Master

  • Posters
  • 14 381 Сообщений:

Отправлено 10 Ноябрь 2021 — 22:54

STATUS_FAILED_STACK_SWITCH
Структура зона-репы менялась и старый апдейтер об этом не в курсе.

Тогда, по идее, апдейтер должен падать на любой ОС, но на Windows 7 проблем нет…

Это код системной ошибки — винда подавилась апдейтером. И падать, по идее, может на любой ОС, но могут быть и свои нюансы.

  • Наверх

#13


Afalin

Afalin

    Guru

  • Dr.Web Staff
  • 5 496 Сообщений:

Отправлено 11 Ноябрь 2021 — 09:49

В зависимости от положения звёзд оно может и не упасть.

Семь раз отрежь – один раз проверь

  • Наверх

#14


shonyv

shonyv

    Newbie

  • Posters
  • 81 Сообщений:

Отправлено 17 Ноябрь 2021 — 09:12

Сегодня не хочет доктор обновляться, все по инструкции сделал и ноль результата! А вот в панели управления не восстанавливается пишет ошибка 46

88c290627a83.gif В камень стрелять, стрелы терять!

  • Наверх

#15


VVS

VVS

    The Master

  • Moderators
  • 18 983 Сообщений:

Отправлено 17 Ноябрь 2021 — 09:24

Сегодня не хочет доктор обновляться, все по инструкции сделал и ноль результата! А вот в панели управления не восстанавливается пишет ошибка 46

Создайте новую тему, в которую сразу же приложите отчёт доктора.
Тема закрыта.
Модератор.

меня вот что возмутило.  что даже не начинают толком диалог сразу дампы…… © alehas777
———————————
Антивирус это как ремень безопасности — всего лишь увеличивает шансы выжить или получить менее тяжкую травму при аварии.
Есть, однако, категория людей, которые рассматривают средства безопасности как ауру неуязвимости. © basid

  • Наверх

Используйте CUDA сегодня, чтобы добиться негативных эффектов изображения

оглавление

описание проблемы

анализ проблемы

1. Результат расчета необъективен.

2. exited with code -1073740940 (0xc0000374)

решение

Резюме


описание проблемы

1. Результат расчета необъективен.

2. exited with code -1073740940 (0xc0000374)


анализ проблемы

1. Результат расчета необъективен.

cudaError_t supplementPix(uchar *c, const uchar *a, unsigned int size);

__global__ void supplementKernel(int *c, const int *a)
{
	int i = threadIdx.x;
         c [i] = 255-a [i]; // Постоянное вычисление вызовет ошибки вычислений, например 255-1 = 253
}

результат операции

Позже создайте объект cv :: Mat со всеми 255 и CV_8UC3 и извлеките массив данных как вычитаемое число.

cv::Mat mask = cv::Mat(rows, cols, CV_8UC3, cv::Scalar::all(255));
	// Постоянный расчет вызовет ошибки расчета, например 255-1 = 253
	 // Необходимо использовать массив для передачи параметров
const uchar* maskData = mask.data;

Результат операции правильный:

Но есть новые проблемы


2. exited with code -1073740940 (0xc0000374)

Найдите соответствующую информацию

《Exit code -1073740940》(https://www.baidu.com/link?url=ud0ZNzh-8ZJmrpFojN8F2uxyOQXEBoeSAJvhiVsvsVuvfXca6U5Kup3UsaBMU-vo5gH_gBCAsqPdI6BpPXtp1F7fBaksS_RFgEFb1IMWs7fKHORjUTdTzm8FmA_uhYQK2q7zXj2R1MSszMqTc7wnAJABHZw-HItOL8AzVBUG39yO2NnvitqXRJWrrv3JohHh&wd=&eqid=95880f450000d468000000055e85a6e6)

«VS сообщил об ошибке, что wntdll.pdb не был загружен, ntdll.dll0xC0000374: куча повреждена» (https://blog.csdn.net/luoye2333/article/details/89087530)

Начать отладку

После отладки было обнаружено, что ошибка памяти возникла после вызова метода CUDA, который вызывал ошибку, когда объект был уничтожен в конце программы.

Проверить функцию вызова CUDA

cudaError_t supplementPix(uchar *c, const uchar *a, const uchar *b, unsigned int size){
    cudaStatus = cudaMalloc((void**)&dev_c, size * sizeof(int));
    cudaStatus = cudaMalloc((void**)&dev_a, size * sizeof(int));
    cudaStatus = cudaMalloc((void**)&dev_b, size * sizeof(int));
    cudaStatus = cudaMemcpy(dev_a, a, size * sizeof(int), cudaMemcpyHostToDevice);
    cudaStatus = cudaMemcpy(dev_b, b, size * sizeof(int), cudaMemcpyHostToDevice);
    cudaStatus = cudaMemcpy(c, dev_c, size * sizeof(int), cudaMemcpyDeviceToHost);
}

Обнаружено, что при изменении кода шаблона int было изменено на uchar, а sizeof (int) было изменено.


решение

После модификации результат операции (успех)



Резюме

Когда возвращаемое значение программы выходит с кодом -1073740940 и ошибка отладки указывает 0xc0000374, что куча ntdll.dll повреждена, это означает, что это утечка памяти.

Особенно это приводит к ошибкам, когда объект уничтожается (т.е. release ()) в конце программы.


1) Скачайте последнюю версию лаунчера с главной страницы TLauncher

2) Нужно проверить, действительно ли у вас данная версия драйверов видеокарты. Нажимаем «Пуск» пишем в поиск «dxdiag. exe» и запускаем данную программу. В ней выбираем вкладку «Экран» (Монитор) и если находим такую надпись возле «Версии:» . 3.7849 (что и означает версию 378.49), то у вас проблема в драйверах! Переходите к следующему пункту.

3.1) Установите более новую версию драйвера, например 378.66, через их программу Geforce Experience.

Или второй вариант:

3.2) Так же, можно установить чуть более старую версию драйверов видеокарты, например 376.33. Ссылка для скачивания: https://www. nv >

На данной странице, вам придётся выбрать вашу модель видеокарты и версию операционной системы, нажать «Поиск» и скачать драйвера.

Если Ваша проблема остаётся актуальной, запросите поддержку у TLauncher:

Details

> [16:03:10] [Server thread/INFO]: Preparing spawn area: 100%

> [16:03:10] [Server thread/INFO]: Time elapsed: 22561 ms

> [16:03:13] [Server thread/INFO]: Changing view distance to 6, from 10

> [16:03:13] [Server thread/WARN]: Can’t keep up! Is the server overloaded? Running 2827ms or 56 ticks behind

> [16:03:15] [Server thread/INFO]: ****[local:E:e26e0339] logged in with entity id 401 at (34.5, 76.0, 22.5)

> [16:03:15] [Server thread/INFO]: ****joined the game

> [16:03:16] [Server thread/INFO]: Saving and pausing game.

> [16:03:16] [Server thread/INFO]: Saving chunks for level ‘New World’/overworld

> [16:03:16] [Client thread/INFO]: Loaded 0 advancements

[VersionManager] Refreshing versions locally.

[VersionManager] Versions has been refreshed (17 ms)

[Launcher] Launcher exited.

Tried almost everything, uinstalled java and installed few different versions, checked my drivers and all of them are the newest, tried something from internet videos what i saw. Does someone know?

Самая популярная песочница собрала внушительную армию фанатов, которая запускает миллионы игровых сессий ежедневно. Естественно, при таких масштабах нельзя обойтись без сбоев. Одной из популярных проблем является ошибка “Minecraft closed with exit code 1” или “TLauncher: произошла непредвиденная ошибка”, которая появляется при запуске TLauncher Forge любой версии. Сегодня мы постараемся рассказать о всех возможных причинах данного бага, а также покажем как устранить большинство из них.

Ошибка “Minecraft closed with exit code 1”

Причины ошибки в Майнкрафт

Сама ошибка указывает лишь на то, что произошел сбой. Конкретную информацию можно увидеть в информационном окне, где будет указанна сама причина. Источники проблемы могут быть разными, отчего пользователи получают различные уведомления:

Непредвиденная ошибка в TLauncher

В основном проблема появляется после смены версии ОС, применении системных обновлений или переходе на новую версию игрового лаунчера. Также стоит упомянуть про влияние модов и расширений.

Как исправить Minecraft closed with exit code 1

Мы собрали все отмеченные игроками решения, а описание сделали начиная с самых простых. Далее действуйте по-пунктам, каждый раз проверяя работоспособность игры.

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

Про смартфон — цены, обзоры и реальные отзывы покупателей

1) Скачайте последнюю версию лаунчера с главной страницы TLauncher

2) Нужно проверить, действительно ли у вас данная версия драйверов видеокарты. Нажимаем «Пуск» пишем в поиск «dxdiag. exe» и запускаем данную программу. В ней выбираем вкладку «Экран» (Монитор) и если находим такую надпись возле «Версии:» . 3.7849 (что и означает версию 378.49), то у вас проблема в драйверах! Переходите к следующему пункту.

3.1) Установите более новую версию драйвера, например 378.66, через их программу Geforce Experience.

Или второй вариант:

3.2) Так же, можно установить чуть более старую версию драйверов видеокарты, например 376.33. Ссылка для скачивания: https://www. nv >

На данной странице, вам придётся выбрать вашу модель видеокарты и версию операционной системы, нажать «Поиск» и скачать драйвера.

Если Ваша проблема остаётся актуальной, запросите поддержку у TLauncher:

Некоторые пользователи операционной системы Windows при запуске какого-либо приложения с правами администратора могут столкнуться с ошибкой «Ошибка файловой системы 1073741819». Довольно часто это происходит при переходе и соответствующем обновлении с Windows 7 на Windows 10, но бывают случаи, что с данной проблемой встречаются пользователями Windows 7 и Windows 8. В этой статье я расскажу, в чём суть ошибки 1073741819, каковы её причины, и как исправить ошибку файловой системы на ваших ПК.

Скриншот — Error code: — 1073741819

Причины ошибки файловой системы 1073741819

Наиболее часто с данной ошибкой встречаются пользователи ОС Виндовс 10, после перехода на неё с Виндовс 7. Возникновение данной ошибки не только мешает запуску программ с административными правами, но и просто не даёт установить в системе какой-либо новый софт. Каждый раз, когда пользователь пытается выполнить подобное, UAC (система контроля учётных записей пользователя) выдаёт ошибку 1073741819, по сути блокируя административную активность в операционной системе.

Основной причиной, как не странно, обычно является звуковая схема, которая перешла с вашей Windows 7 на Windows 10 при обновлении из одной ОС в другую. По определённым причина Виндовс 10 не способна проигрывать некоторые системные звуки звуковой схемы Виндовс 7, и, как результат, UAC блокирует административный доступ к системному функционалу.

Доступ заблокирован

Как исправить ошибку файловой системы 1073741819

В соответствии с вышеописанным, пресловутая ошибка файловой системы 1073741819 исправляется следующими способами:

Способ 1. Измените звуковую схему на «по умолчанию»

Для этого перейдите в «Панель Управления» – «Звуки», найдите там параметр «Звуковую схема» и установите на «По умолчанию» (или «Windows по умолчанию»). Рассматриваемая мной ошибка после этого должна пропасть.

Выбираем звуковую схему «По умолчанию»

Рекомендую также отключить уведомления UAC, для чего откройте стартовое меню, найдите и кликните на «Контроль учётных записей пользователя» (User Access Control), нажмите на «Изменение параметров контроля учётной записи» (Change User Access Control»), и установите ползунок в самое нижнее значение.

Способ 2. Измените рабочую тему ОС Windows

Способ 3. Отключите UAC

Выбираем «Никогда не уведомлять»

Способ 4. Создайте другой пользовательский аккаунт

Ещё одним, и довольно эффективным способом решения проблемы 1073741819, будет создание новой учётной записи и работа с ней. Обычно в новой «учётке» рассматриваемая мной проблема пропадает.

Способ 5. Измените параметры питания

Способ 6. Удалите AVAST

В довольно редких случаях причиной рассматриваемой проблемы выступал функционал антивируса AVAST, установленного на компьютере пользователя. Для избавления от ошибки 1073741819 рекомендуется полностью удалить данный антивирус с вашего компьютера, заменив его более стабильной альтернативой.

Заключение

Основным решением проблемы «Ошибка файловой системы 1073741819» является схема звуковой схемы, использующейся по умолчанию в ОС Windows. Если данный вариант не помог, попробуйте другие, перечисленные мной, советы, они помогут устранить ошибку 1073741819 на ваших ПК.

We are currently investigating the root cause of this issue. In order to solve this issue, some known workarounds include reinstalling the JVM or updating your graphics drivers, this error may also be caused by having «D3Dgear» installed.

How to fix this

Due to the quite vagueness of the error, we are unsure of the exact cause. Please try the following and attempt to see it they solve your case:

Reinstalling Java

Minecraft, runs on a platform called Java. Java comes in many shapes, and forms, which may make it confusing exactly which version of it you should have installed, which is what this should hopefully explain.

First, we want to find out our OS’s processor architecture.

If you are on Windows — Press your Windows + R keys, to bring up a run dialogue, in it, type in: «cmd«, and hit enter. This will bring up a command prompt window. In the window, type in: echo %processor_architecture% then hit enter.
If the output was amd64, you have a 64-bit OS. If the output was x86, you have a 32-bit OS.

If you are on Mac OSX — You have a 64-bit OS, all good!

Now that we have that, look at the diagram below, and download the proper Java version for your OS and processor architecture. If you are prompted that said version of Java is already installed, please uninstall your current version of Java and redo this step.

# 32 bit OS 64 bit OS
Windows jre-7u25-windows-i586.exe jre-7u25-windows-x64.exe
Mac OSX jre-7u25-macosx-x64.dmg
Linux jre-7u25-linux-i586.rpm jre-7u25-linux-x64.rpm

Once you have installed the proper Java version, you should give the game a go!

Источники:

https://window-10.ru/launcher-minecraft-closed-with-exit-code/

https://pro-smartfon. ru/minecraft-closed-with-exit-code-1073741819/


Большое спасибо заранее за надежные полезные мысли …. Кажется, у этого есть что-то. Теперь я понимаю, что проблема, вероятно, только незначительно связана с установкой с установщиком.

Алло,

Я уверен, что это не новичок, а идея? Независимо от того, что я делаю вместо этого, он принял скорость combi после длительного перезапуска x, все без успеха. Как вы думаете, на стороне производителя … при необходимости в режиме совместимости Lasco

Поэтому он, вероятно, имеет какое-то отношение к сканеру, потому что ошибка произошла, когда я хотел обновить Outlook.

Проблема в том, что я установщик, но что? Твен и драйвер WIA я не могу выдержать, несмотря на то, что сейчас почти 40 часов. Приветствие — больше не доступны. Кто-нибудь должен установить, если не предлагается драйвер Windows 10!

14393, калькулятор представляет собой ноутбук Satellite C 70 A. Система WIN 10 stand 1607 / test только после ручного ввода USB-порта, сканера нет. Пробовал компьютер определяет, что 100 больше не может устанавливать сканер. Все попытки с помощью антивирусного сканера и Malwarebytes проверяются без находок.

У меня есть некоторые подсказки для других инструментов обслуживания пользователей и т. Д.

Антивирус – это обязательная программа для всех компьютеров, с целью безопасной работы. Однако, для максимальной защиты, антивирус должен каждый день обновляться, а то и несколько раз на день, чтобы подгружать новые данные о вирусах и не упустить из виду новую угрозу. Функция автоматического обновления вирусных баз включена в каждый антивирус и Dr.Web не является тому исключением. Но что делать, если по каким-то причинам у вас перестал обновляться Доктор Веб? Можно ли самостоятельно устранить ошибку и наладить работу антивируса для защиты своего компьютера?

Содержание

  1. Почему не обновляется Dr.Web
  2. Способы решения проблемы
  3. Восстановление или перезагрузка программы
  4. Обновление вручную
  5. Устранение ошибок диска
  6. Обращение в техподдержку

Самой популярной причиной, почему антивирус не обновляется – это отсутствие интернет-соединения. Ведь вирусные базы берутся из сервера компании при помощи подключения к интернету. Еще одной причиной приостановки обновления антивируса является срок окончания лицензии программы. Но если вы точно уверены, что Dr.Веб исправно работал, лицензия не просрочена, вы самостоятельно не отключали обновление и компьютер подключен к интернету, то в чем же может быть проблема? Антивирус в результате системного сбоя может прекратить обновляться в привычном режиме, если произошло нарушение в скриптах, часть их повреждена и как результат – ошибка репозитория. Поэтому исправлять подобный сбой придется вручную.

Способы решения проблемы

Если вы столкнулись с ошибкой репозитория или другими словами ошибка 10, которая отвечает за обновление антивируса, то не стоит впадать в панику, реанимировать Доктор Веб вы сможете самостоятельно. Для этого ознакомьтесь с каждым из способов и выберите для себя оптимальный.

Восстановление или перезагрузка программы

Простым, но иногда действенным способом является перезапуск программы. Для этого нажмите на значок антивирус в правом нижнем углу панели и среди доступных функций, выберите выход. Теперь запустите утилиту и попробуйте нажать «Обновление». Если такой метод не сработал, тогда возьмемся за восстановление Доктора Web при помощи стандартных инструментов Windows:

  1. Нажимаете на кнопку «Пуск».
  2. Справа выбираете «Панель управления» или «Параметры» (далее «Система»), в зависимости от версии системы.
  3. В меню системы выбираете раздел «Программы» или «Установка и удаление программ».
  4. Переходите в него, после чего на экране появляется список всех приложений на компьютере.
  5. Выбираете «Dr.Web» и вверху нажимаете «Изменить», а после «Восстановить».
  6. На экране запустится процесс сканирования файлов программы.

Когда процесс восстановления антивируса завершится, обязательно перезагрузите компьютер и проверьте исправность обновления.

Обновление вручную

Если первый способ вам не помог, а вы хотите здесь и сейчас произвести обновление Dr.Веба, то в программе доступна функция ручного обновления. Что она подразумевает? Вам необходимо самостоятельно сохранить в отдельную папку на компьютере последнюю версию обновлений вирусных баз, а после в настройках антивируса указать место, откуда необходимо подтянуть обновление. Делается это следующим образом:

  1. Запустите Доктор Web.
  2. В левом нижнем углу интерфейса программы нажмите на замочек, чтобы он открылся, после справа выбираете «Настройки» (значок шестеренки).
  3. Переходите в раздел «Основные», а потом выбираете раздел «Обновление».
  4. В пункте «Источник обновлений» нужно внизу нажать на кнопку «Изменить» и выбрать следующий тип «Локальная или сетевая папка».
  5. Далее нажимаете «Обзор» и указываете папку на компьютере, где вы сохранили пакет последней вирусной базы.
  6. Нажимаете «Ок» и запускаете обновление.

При реализации такого метода обязательно выключите интернет, чтобы программа не пыталась каждую секунду связаться с сервером для автоматического обновления. Однако вы должны понимать, что такой способ поможет решить проблему с обновлением Доктора Web в одноразовом порядке, то есть, чтобы поддерживать актуальную версию антивирусных баз, вам нужно каждый раз скачивать новый пакет и помещать его в папку, откуда антивирус подтягивает обновления. Поэтому для надежной защиты компьютера нужно исправить эту проблему и вернуть автоматическое обновление Dr.Web.

Устранение ошибок диска

Теперь переходим к более сложному способу исправления ошибки обновления, однако, по отзывам многих пользователей, именно он оказался наиболее эффективным. Итак, что здесь нужно сделать? Если антивирус Доктор Web перестал обновляться без видимых на то причин, то возможно, что в момент системного сбоя повредились файлы на Локальном диске. Переходим к решению проблемы:

  1. Сначала запускаем проверку исправности жесткого диска. Открываете меню компьютера, на «Локальный диск C» ставите мышкой и переходите в «Свойства» при помощи правой кнопки.
  2. Далее выбираете «Сервис», а после «Проверить».
  3. Ждете окончания сканирования.

Если в результатах проверки система требует исправить неполадки, то переходим к действиям. В первую очередь нам нужно отключить в антивирусе такие компоненты, как «Самозащита» и «Превентивная защита», так как именно эти модули отвечают за внесение изменений в программу, а после перенастроить программу:

  1. Сначала отключите интернет.
  2. Справа на панели нажмите на иконку «Web».
  3. Открываете доступ к изменению настроек – нажимаете на замочек в левом нижнем углу, чтобы он открылся.
  4. Переходите в раздел «Компоненты защиты».
  5. Напротив пункта «Превентивная защита», переводим ползунок в неактивное положение.
  6. Теперь возвращаемся в меню настроек и выбираем раздел «Основные», и таким же образом деактивируем модуль «Самозащита».
  7. Далее повторяем шаги из первого способа по восстановлению программы, через меню «Пуск», «Установка и удаление программ» или «Система», в зависимости от платформы.
  8. Перезагружаете компьютер и проверяете на исправность – начинается автоматического обновление Доктора Web или нет.

Если данный способ помог исправить проблему, то обязательно верните прежние настройки антивирусу – включите «превентивную защиту» и модуль «Самозащита».

А если результат проверки не выявил отклонений в жестком диске или восстановление программы не помогло, то остается только одни вариант – переустановить антивирус Доктор Web. Для переустановки необходимо полностью удалить программу и заново ее установить. Чтобы после удаления утилиты не возникло проблем, и не сохранились остаточные файлы, необходимо дополнительно реестр. Если вы не знаете, как это делать, то просто воспользуйтесь специальными очищающими утилитами, например, CCleaner или Master Clean, которые не только почистят компьютер от мусора, но помогают правильно провести процесс деинсталляции. Также для этих целей существует специально разработанная программа от компании Dr.Веб – Web Remover.

Обращение в техподдержку

Ну и последний вариант, который спасает при неэффективности всех предыдущих, это обращение в техподдержку сервиса Dr.Web. Специалисты технической службы помогут разобраться с вашей проблемой и предложат ее устранение. Однако процесс обращения в техподдержку заточен в виде отправки специального отчета, а не как это обычно бывает в виде написания обращения. То есть, вам нужно воспользоваться приложением DwSysInfo, где формируется отчет об ошибке работы антивируса и отсылается в компанию. После рассмотрения с вами связывается сотрудник сервиса и устраняет проблему. Преимущества обращения в техподдержку является и то, что специалист может получить дистанционный доступ к вашему компьютеру и «напрямую» настроить автоматическое обновление.

( 1 оценка, среднее 5 из 5 )

Код ошибки 1073740940 (-1073740940, если быть точнее) может возникать в Minecraft по самым разным причинам, однако чаще всего ее вызывает следующее:

  • устаревшая версия Java;
  • недостаток выделенной оперативной памяти;
  • конфликтующие с игрой модификации.

Итак, что можно сделать, чтобы избавиться от ошибки 1073740940? Во-первых, вам нужно обновить версию Java на своем компьютере. Возможно, вы решили поиграть в Minecraft на только что установленной ОС, и еще не успели установить актуальную версию Java.

Также можно попробовать выделить чуть больше оперативной памяти для игры. Запустите лаунчер Minecraft и перейдите в раздел загрузок. У последнего релиза кликните на значок ••• и выберите «Редактировать». Опуститесь к строке аргументов JVM и вставьте в пустую строку значение -Xmx4G или -Xmx8G (зависит от объема ОЗУ в вашем ПК). Сохраните изменения и запустите игру.

Согласно сообщениям в сети, некоторые модификации также способны вызывать появление кода 1073740940 в Minecraft. К примеру, после продолжительных исследований, ребята на Reddit определили, что данную ошибку может вызывать мод Supplementaries (от MehVahdJukaar). Решение — удаление проблемного мода либо установка его другой версии.

Dr.Web считается российским разработчиком антивирусных программ, сервисов для предоставления информационных услуг корпоративным, частным пользователям. Кроме того, “Доктор Веб” – популярная антивирусная программа, установка которой нередко сопряжена с неполадками. Ниже представлены популярные коды ошибок Dr.Web и их расшифровка.

Содержание

  1. Ошибка 2
  2. Ошибка 9
  3. Ошибка 10
  4. Ошибка 11
  5. Ошибка 12
  6. Ошибка 16
  7. Ошибка 32
  8. Ошибка 33
  9. Ошибка 110
  10. Ошибка 902
  11. Ошибка 914
  12. Ошибка 1066
  13. Ошибка 1722
  14. Ошибка 1726
  15. Ошибка 12002
  16. Ошибка 12007
  17. Ошибка 12029
  18. Ошибка 12152

Ошибка 2

Ошибка dr web 2 свидетельствует о сбое в процессе обновления. Она вызывается несколькими причинами. Чтобы ее исправить, необходимо проверить доступность сети, правильность настроек прокси при их использовании. Если сеть доступна, прокси настроен правильно, необходимо выполнить ряд действий, направленных на восстановление системы с антивирусом. Возможно, проблема исчезнет.

Коды ошибок Dr.Web

Устранить проблему можно тремя путями:

  1. Произвести проверку жесткого диска, используя утилиту chkdsk. Чтобы проверить диск, необходимо ввести команду chkdsk C: /F /R в поисковике Виндовс, зажав клавиши Виндовс+R. Утилита предложит проверить диск после перезагрузки. С действием нужно согласиться. При загрузке появится сообщение о проверке диска, которую можно отменить, нажав любую клавишу. После проверки диска, следует перегрузить систему и протестировать его.
  2. Выполнить восстановление антивирусника. Для этого нужно открыть Пуск, перейти в Панель Управления, Программы и компоненты. Далее нажать Изменить и Восстановить программу. После восстановления системы перегрузить ОС и проверить, как работает антивирусник.
  3. При сохранении неполадки в обновлении, следует нажать на антивирусный значок справа внизу, потом зайти в Центр безопасности. Там найти значок замок, потом шестеренку. В разделе Общие нажать на Дополнительные настройки, Журнал, Изменить. У флажка с обновлением антивирусника кликнуть на флажок и сохранить настройки. Далее нужно повторить попытку обновления. После появления кода 2 сформировать отчет, выбрав Поддержку, Создать отчет. Далее обратиться в службу поддержки.

Коды ошибок Dr.Web

Ошибка 9

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

  1. Щелкнуть по значку программы справа внизу правой кнопкой мыши;
  2. Перейти в режим администратора, щелкнуть по замку, далее – по шестеренке;
  3. Выбрать раздел Сеть, далее кликнуть на параметр использования прокси-сервера, корректно настроить соединение сети.

Важно! Если прокси не применяется, следует проверить сетевое соединение и при необходимости настроить его.

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

Ошибка 10

Суть проблемы состоит в репозиторие, сбое в скриптах, отсутствии некоторых из них. Решать проблему необходимо, переустановив антивирус. Для решения вопроса, следует скачать с официального сайта антивирусную программу. Удалить предыдущую версию программы, сделать перезагрузку компьютера, далее запустить антивирус и при установке указать путь к файлу. Сделать повторную перезагрузку компьютера.

Коды ошибок Dr.Web

Ошибка 11

Проблема заключается в невозможности обновления антивирусных компонентов. Код 11 высвечивается по ряду причин. Нередко его появление связано с использованием устаревшей антивирусной версии или с повреждением файлов. Если используется устаревшая версия антивируса, необходимо удалить старую и закачать новую программу.

Если файлы повреждены вследствие проблем с диском, следует исправить все ошибки диска, восстановить антивирусную систему. Восстановление можно провести через следующую пошаговую инструкцию: Пуск, Панель управления, Программы и компоненты, Dr.Web, Изменить, Восстановить. После восстановления, потребуется перезагрузить персональный компьютер, проверить, как работают обновления.

Коды ошибок Dr.Web

Ошибка 12

Суть вопроса в блокировке лицензии. Зачастую она возникает при отсутствии ее активации, активации старой, лицензированной версией, использовании лицензии на другом персональном компьютере. Если не активирована лицензия, необходимо активировать ее через менеджер лицензий. Достаточно удалить заблокированную лицензию и оставить одну действующую.

Если проблема заключается в автоматически блокируемой лицензии, необходимо указать новую при антивирусной регистрации через Менеджер лицензий. Если используемое разрешение было использовано раньше на другом персональном компьютере, необходимо обратиться в техническую поддержку, приложив документы, подтверждающие владение лицензией.

Ошибка 16

По этой ошибке установить и работать с антивирусом невозможно из-за действия сторонних программ. Есть несколько основных причин, почему возникает неполадка. В системе могут находиться другие антивирусы или частично установленные файлы. Также в системе могут находиться вредоносные ПО, блокирующие установку антивирусной программы. Необходимо использовать бесплатную утилиту, чтобы очистить персональный компьютер от вирусов, после чего повторить установку.

Коды ошибок Dr.Web

Ошибка 32

32 ошибка Доктор Веб заключается в неполадке установке или восстановлении антивирусной программы. Она появляется, если есть критические повреждения в момент невозможности установки, восстановления продукта по каким-то причинам. Следует загрузить, установить утилиту, после чего перезагрузить персональный компьютер, повторно установить программу.

Ошибка 33

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

Коды ошибок Dr.Web

Ошибка 110

110 неполадка связана с неполадкой установки серверных продуктов. Она вызывается разными причинами, поэтому необходимо обратиться в техническую поддержку, приложить отчет, который создан с помощью утилита.

Ошибка 902

Суть неполадки состоит в неправильной установке, удалении. Она возникает, если повреждаются антивирусные файлы, не полностью или некорректно был удален старый антивирус.

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

Ошибка 914

Коды ошибок Доктор Веб 914 и 910 говорят о том, что произошел сбой компонентов продукта. В такой ситуации необходимо переустановить антивирус.

Если удаление с помощью стандартных средств оканчивается неудачей, следует скачать официальную утилиту и перезагрузить персональный компьютер. Если код продолжает высвечиваться, программисты советуют написать в службу поддержки.

Ошибка 1066

Неполадка связана с невозможностью установки антивируса, если есть несовместимое программное обеспечение с утилитой. Зачастую проблема возникает с агента Доктора Веб, если на ПК уже установлен другой антивирусник. Необходимо выполнить его удаление, а позднее – повтор попытки установки Доктора Веб.

Коды ошибок Dr.Web

Если появляются сложности или невозможно определить несовместимую программу, следует обратиться к специалистам службы технической поддержки.

Ошибка 1722

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

Ошибка 1726

Ошибка связана с некорректным запуском программы. Причинами служат основные четыре пункта. Неполадка связана с поврежденной загрузкой или неполной установкой программного обеспечения, повреждением реестра Доктор Веб из-за установки или удаления утилиты.

Может появляться из-за наличия в системы вируса, вредоносного программного обеспечения, повреждения файла Виндовс или удаления файлов утилиты другой программой.

Ошибка может быть связана с другими факторами, поэтому при совершении всех действий, направленных на решение возникшей проблемы, следует обратиться в техническую поддержку.

Что можно сделать? Специалисты рекомендуют в такой ситуации восстановить записи реестра, полностью просканировать компьютер на вирусы, очистить ПО от временных файлов, папок и другого мусора. Они советуют также обновить драйверы компьютера, использовать Восстановление Виндовс системы для отмены последних изменений в ПО, переустановить программу заново, запустить проверку системных Виндовс файлов, установить доступные Виндовс обновления и произвести чистую установку Виндовс.

Ошибка 12002

Суть заключается в неполадке с сетью, неправильной настройке сетевых соединений, неверно выбранных параметров серверного прокси, особенностью настройки сетевого подключения. Специалисты рекомендуют по этой проблеме проверить доступность интернет-сети, настройку брандмауэра, серверного прокси.

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

Коды ошибок Dr.Web

Ошибка 12007

Неполадка возникает из-за отсутствия доступа к сети, неправильной настройки сетевых соединений, неверных параметров серверного прокси, особенности настройки сетевого подключения на рабочем месте. При возникновении подобной ошибки необходимо проверить доступность интернет-сети, настроек брандмауэра, серверного прокси.

Коды ошибок Dr.Web

Важно! Если перечисленные выше действия были проделаны, а неполадка не исправлена, специалисты рекомендуют обратиться в службу технической поддержки. Для того чтобы сотрудники смогли оперативно помочь в ситуации, инженеры рекомендуют заранее делать подробный отчет о проделанных ранее действиях для устранения появляющегося кода при запуске утилиты.

Ошибка 12029

Ошибка связана с сетевыми неполадками, неправильной настройкой сетевых соединений, неверными параметрами серверного прокси. Нередко она сопряжена с тем, что пользователю не удается настроить сетевое подключение на рабочем столе. Также часто она связана с ошибкой в модуле обновления. Специалисты рекомендуют в таком случае действовать двумя путями:

  • Проверить доступность интернет – соединения, брандмауэрных настроек и серверного прокси;
  • Написать в службу технической поддержки для выяснения обстоятельств невозможности корректной работы антивирусника.

При сохранении ошибки, инженеры рекомендуют сделать переустановку антивируса. В таком случае следует скачать с сайта актуальный антивирусный дистрибутив. Потом удалить Доктор Веб предыдущей версии, используя “Панель управления”, “Установку и удаление программ”. Затем перезагрузить компьютер, скачать, запустить утилиту, перезагрузить компьютер, запустить антивирус и еще раз сделать перезагрузку операционной системы устройства.

Важно! Если после переустановки ошибка продолжит появляться, следует сделать отчет через DwSysInfo и отправить его специалистам службы техподдержки.

Коды ошибок Dr.Web

Ошибка 12152

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

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

#1

Kord

    Newbie

  • Posters
  • 30 Сообщений:

Отправлено 06 Ноябрь 2021 — 15:34

Здравструйте. Есть ПК с Windows 10 v1903 и DrWeb Security Space 12, у которого нет (и не будет) подключения к интернету. Обновления для Доктора скачиваются с других ПК с помощью файлов drwupsrv.exe и drwebzones.xml по команде:
drwupsrv.exe -c download -r «папка» -s90 —zones=drwzones.xml —key-file «файл ключа»

Файлы drwupsrv.exe и drwebzones.xml используются всегда самые свежие.
На протяжении нескольких лет данная схема всегда работала без сбоев, обновлялся с частотой раз в месяц, 2 дня назад сделал крайнее обновление — все хорошо. Сегодня понадобилось с помощью Акрониса восстановить раздел с Windows из образа, сделанного аж в 2019 году. Теперь Доктор образца 2019 года при обновлении выдаёт код ошибки: -1073740940. Если в настройках включить только обновление вирусных баз, то обновление проходит успешно.

Я почти на 100% уверен, что проблему можно решить путем переустановки Доктора из свежего дистрибутива, но хотелось бы понять в чем причина возникновения этой ошибки и как можно обновить старые модули Доктора без переустановки :)

PS: логи с этой машины скинуть весьма проблематично, но если это необходимо — напишите, сделаю

Сообщение было изменено Kord: 06 Ноябрь 2021 — 15:35

  • Наверх

#2


Dmitry_rus

Dmitry_rus

    Guru

  • Helpers
  • 3 391 Сообщений:

Отправлено 06 Ноябрь 2021 — 17:12

Так, в качестве предположений (без логов гадать бессмысленно):

1. Прочекайте файловую систему на предмет ошибок.

2. Не исключено, что структура репозитория со времен 2019 г. несколько изменилась, и апдейтер не совсем корректно с ней работает.

  • Наверх

#3


Kord

Kord

    Newbie

  • Posters
  • 30 Сообщений:

Отправлено 06 Ноябрь 2021 — 17:24

Нашёл у себя в закромах базы от 26.02.2021, попробовал с них обновиться и обновление прошло успешно! Перезагружаю ПК, как того попросил Доктор, пробую обновиться со свежих баз: обновление выполнено успешно!

Для чистоты эксперимента попробовал ещё раз восстановить образ системы 2019 года: все тоже самое — обновление базами 04.11.2021 выдаёт ошибку, обновление базами 26.02.2021 проходит успешно.

Попробовал восстановить образ системы с Windows 7 SP1 (без обновлений) тоже 2019 года, устанавливаю обновление Windows для поддержки SHA256 и Доктор обновляется свежими базами без ошибок:)

  • Наверх

#4


Kord

Kord

    Newbie

  • Posters
  • 30 Сообщений:

Отправлено 06 Ноябрь 2021 — 17:34

Так, в качестве предположений (без логов гадать бессмысленно):
1. Прочекайте файловую систему на предмет ошибок.
2. Не исключено, что структура репозитория со времен 2019 г. несколько изменилась, и апдейтер не совсем корректно с ней работает.

1. Проверил: с файловой системой и самим HDD все в порядке 100%, Акронис использую один и то же уже лет 8, конкретно эта версия не подводила ни разу, да и образ раздела посекторный.
2. Вполне возможно что так, но на Windows 7 Доктор обновляется с новых баз без проблем

Какие именно логи нужны? dwupdater.log или ещё что-то?

  • Наверх

#5


VVS

VVS

    The Master

  • Moderators
  • 19 094 Сообщений:

Отправлено 06 Ноябрь 2021 — 17:40

Какие именно логи нужны? dwupdater.log или ещё что-то?

Для начала именно его.

меня вот что возмутило.  что даже не начинают толком диалог сразу дампы…… © alehas777
———————————
Антивирус это как ремень безопасности — всего лишь увеличивает шансы выжить или получить менее тяжкую травму при аварии.
Есть, однако, категория людей, которые рассматривают средства безопасности как ауру неуязвимости. © basid

  • Наверх

#6


Kord

Kord

    Newbie

  • Posters
  • 30 Сообщений:

Отправлено 06 Ноябрь 2021 — 19:09

Какие именно логи нужны? dwupdater.log или ещё что-то?

Для начала именно его.

Дата: 07.11.2021

1:53 — попытка обновления базами от 04.11.2021 (ошибка)

1:55 — обновление базами от 26.02.2021 (успешно)

Перезагрузка ПК

1:58 —  обновление базами от 04.11.2021 (успешно)

Перезагрузка ПК

Прикрепленные файлы:

  • Прикрепленный файл
     log.rar   47,3К
      3 Скачано раз
  • Наверх

#7


Dmitry_rus

Dmitry_rus

    Guru

  • Helpers
  • 3 391 Сообщений:

Отправлено 06 Ноябрь 2021 — 19:51

При обновлении в 1:53:07 старый апдейтер падает на полпути, затем перезапускается и начинает 2-ю фазу (постапдейт), не завершив собственно апдейт. Возможно, дебажные логи апдейтера смогут как-то пролить свет.

20211107 01:53:07 [INF] [ Loader ] Download file versions.xml from C:DrWeb-UpdatesUpdatesversions.xml to C:ProgramDataDoctor WebUpdaterrepoversions.xml.newer
20211107 01:53:07 [INF] [ Loader ] Timestamp zone is 20211103183753
20211107 01:53:07 [INF] [ Loader ] Zone C:DrWeb-UpdatesUpdates has valid timestamp for update
20211107 01:53:07 [INF] [ Loader ] Download file certificate.xml from C:DrWeb-UpdatesUpdatescertificate.xml to C:ProgramDataDoctor WebUpdaterrepocertificate.xml.newer
20211107 01:53:07 [INF] [ Loader ] Download file 90products.xml from C:DrWeb-UpdatesUpdates90products.xml to C:ProgramDataDoctor WebUpdaterrepo90products.xml.newer
Updater version: 12.0.12.08020, x64, Time : 07 November 2021  01:53:07
Computer name  : PC, User name : WORKGROUPPC$
Platform       : Microsoft Windows 10 Professional  18362, x64, Locale : 1049
Command line   :  -c postupdate --progress-to-console --verbosity=info --dws9 --interactive --host-guid=a5564af6-5497-4ec3-9d2e-a8439d75ddc2 --coutname=7C49CEAF1D257329
Copyright (c) Doctor Web, Ltd., 1992-2019
=============================================================================
20211107 01:53:07 [INF] [  Main  ] Logfile: C:ProgramDataDoctor WebLogsdwupdater.log
20211107 01:53:07 [INF] [  Main  ] Updater Run as interactive application [ PID: 5724 ]

  • Наверх

#8


Kord

Kord

    Newbie

  • Posters
  • 30 Сообщений:

Отправлено 06 Ноябрь 2021 — 20:07

При обновлении в 1:53:07 старый апдейтер падает на полпути, затем перезапускается и начинает 2-ю фазу (постапдейт), не завершив собственно апдейт. Возможно, дебажные логи апдейтера смогут как-то пролить свет.

Dmitry_rus, спасибо, что посмотрели.
В принципе для себя я нашёл выход из ситуации (сначала обновиться февральскими базами, затем — актуальными). Думаю, разработчикам будет не особо интересно тратить время на выяснение причин падения Updater’a двухлетней свежести на устаревшей ОС. Но если что, могу собрать дебажные логи :)

  • Наверх

#9


Afalin

Afalin

    Guru

  • Dr.Web Staff
  • 5 552 Сообщений:

Отправлено 07 Ноябрь 2021 — 12:44

Если там падение с heap corruption на этом products.xml, то совсем не интересно.

Семь раз отрежь – один раз проверь

  • Наверх

#10


SergSG

SergSG

    The Master

  • Posters
  • 14 384 Сообщений:

Отправлено 10 Ноябрь 2021 — 15:59

STATUS_FAILED_STACK_SWITCH

Структура зона-репы менялась и старый апдейтер об этом не в курсе.

  • Наверх

#11


Kord

Kord

    Newbie

  • Posters
  • 30 Сообщений:

Отправлено 10 Ноябрь 2021 — 21:52

STATUS_FAILED_STACK_SWITCH
Структура зона-репы менялась и старый апдейтер об этом не в курсе.

Тогда, по идее, апдейтер должен падать на любой ОС, но на Windows 7 проблем нет…

  • Наверх

#12


SergSG

SergSG

    The Master

  • Posters
  • 14 384 Сообщений:

Отправлено 10 Ноябрь 2021 — 22:54

STATUS_FAILED_STACK_SWITCH
Структура зона-репы менялась и старый апдейтер об этом не в курсе.

Тогда, по идее, апдейтер должен падать на любой ОС, но на Windows 7 проблем нет…

Это код системной ошибки — винда подавилась апдейтером. И падать, по идее, может на любой ОС, но могут быть и свои нюансы.

  • Наверх

#13


Afalin

Afalin

    Guru

  • Dr.Web Staff
  • 5 552 Сообщений:

Отправлено 11 Ноябрь 2021 — 09:49

В зависимости от положения звёзд оно может и не упасть.

Семь раз отрежь – один раз проверь

  • Наверх

#14


shonyv

shonyv

    Newbie

  • Posters
  • 81 Сообщений:

Отправлено 17 Ноябрь 2021 — 09:12

Сегодня не хочет доктор обновляться, все по инструкции сделал и ноль результата! А вот в панели управления не восстанавливается пишет ошибка 46

88c290627a83.gif В камень стрелять, стрелы терять!

  • Наверх

#15


VVS

VVS

    The Master

  • Moderators
  • 19 094 Сообщений:

Отправлено 17 Ноябрь 2021 — 09:24

Сегодня не хочет доктор обновляться, все по инструкции сделал и ноль результата! А вот в панели управления не восстанавливается пишет ошибка 46

Создайте новую тему, в которую сразу же приложите отчёт доктора.
Тема закрыта.
Модератор.

меня вот что возмутило.  что даже не начинают толком диалог сразу дампы…… © alehas777
———————————
Антивирус это как ремень безопасности — всего лишь увеличивает шансы выжить или получить менее тяжкую травму при аварии.
Есть, однако, категория людей, которые рассматривают средства безопасности как ауру неуязвимости. © basid

  • Наверх

#1

Kord

    Newbie

  • Posters
  • 30 Сообщений:

Отправлено 06 Ноябрь 2021 — 15:34

Здравструйте. Есть ПК с Windows 10 v1903 и DrWeb Security Space 12, у которого нет (и не будет) подключения к интернету. Обновления для Доктора скачиваются с других ПК с помощью файлов drwupsrv.exe и drwebzones.xml по команде:
drwupsrv.exe -c download -r «папка» -s90 —zones=drwzones.xml —key-file «файл ключа»

Файлы drwupsrv.exe и drwebzones.xml используются всегда самые свежие.
На протяжении нескольких лет данная схема всегда работала без сбоев, обновлялся с частотой раз в месяц, 2 дня назад сделал крайнее обновление — все хорошо. Сегодня понадобилось с помощью Акрониса восстановить раздел с Windows из образа, сделанного аж в 2019 году. Теперь Доктор образца 2019 года при обновлении выдаёт код ошибки: -1073740940. Если в настройках включить только обновление вирусных баз, то обновление проходит успешно.

Я почти на 100% уверен, что проблему можно решить путем переустановки Доктора из свежего дистрибутива, но хотелось бы понять в чем причина возникновения этой ошибки и как можно обновить старые модули Доктора без переустановки :)

PS: логи с этой машины скинуть весьма проблематично, но если это необходимо — напишите, сделаю

Сообщение было изменено Kord: 06 Ноябрь 2021 — 15:35

  • Наверх

#2


Dmitry_rus

Dmitry_rus

    Guru

  • Helpers
  • 3 294 Сообщений:

Отправлено 06 Ноябрь 2021 — 17:12

Так, в качестве предположений (без логов гадать бессмысленно):

1. Прочекайте файловую систему на предмет ошибок.

2. Не исключено, что структура репозитория со времен 2019 г. несколько изменилась, и апдейтер не совсем корректно с ней работает.

  • Наверх

#3


Kord

Kord

    Newbie

  • Posters
  • 30 Сообщений:

Отправлено 06 Ноябрь 2021 — 17:24

Нашёл у себя в закромах базы от 26.02.2021, попробовал с них обновиться и обновление прошло успешно! Перезагружаю ПК, как того попросил Доктор, пробую обновиться со свежих баз: обновление выполнено успешно!

Для чистоты эксперимента попробовал ещё раз восстановить образ системы 2019 года: все тоже самое — обновление базами 04.11.2021 выдаёт ошибку, обновление базами 26.02.2021 проходит успешно.

Попробовал восстановить образ системы с Windows 7 SP1 (без обновлений) тоже 2019 года, устанавливаю обновление Windows для поддержки SHA256 и Доктор обновляется свежими базами без ошибок:)

  • Наверх

#4


Kord

Kord

    Newbie

  • Posters
  • 30 Сообщений:

Отправлено 06 Ноябрь 2021 — 17:34

Так, в качестве предположений (без логов гадать бессмысленно):
1. Прочекайте файловую систему на предмет ошибок.
2. Не исключено, что структура репозитория со времен 2019 г. несколько изменилась, и апдейтер не совсем корректно с ней работает.

1. Проверил: с файловой системой и самим HDD все в порядке 100%, Акронис использую один и то же уже лет 8, конкретно эта версия не подводила ни разу, да и образ раздела посекторный.
2. Вполне возможно что так, но на Windows 7 Доктор обновляется с новых баз без проблем

Какие именно логи нужны? dwupdater.log или ещё что-то?

  • Наверх

#5


VVS

VVS

    The Master

  • Moderators
  • 18 983 Сообщений:

Отправлено 06 Ноябрь 2021 — 17:40

Какие именно логи нужны? dwupdater.log или ещё что-то?

Для начала именно его.

меня вот что возмутило.  что даже не начинают толком диалог сразу дампы…… © alehas777
———————————
Антивирус это как ремень безопасности — всего лишь увеличивает шансы выжить или получить менее тяжкую травму при аварии.
Есть, однако, категория людей, которые рассматривают средства безопасности как ауру неуязвимости. © basid

  • Наверх

#6


Kord

Kord

    Newbie

  • Posters
  • 30 Сообщений:

Отправлено 06 Ноябрь 2021 — 19:09

Какие именно логи нужны? dwupdater.log или ещё что-то?

Для начала именно его.

Дата: 07.11.2021

1:53 — попытка обновления базами от 04.11.2021 (ошибка)

1:55 — обновление базами от 26.02.2021 (успешно)

Перезагрузка ПК

1:58 —  обновление базами от 04.11.2021 (успешно)

Перезагрузка ПК

Прикрепленные файлы:

  • Прикрепленный файл
     log.rar   47,3К
      3 Скачано раз
  • Наверх

#7


Dmitry_rus

Dmitry_rus

    Guru

  • Helpers
  • 3 294 Сообщений:

Отправлено 06 Ноябрь 2021 — 19:51

При обновлении в 1:53:07 старый апдейтер падает на полпути, затем перезапускается и начинает 2-ю фазу (постапдейт), не завершив собственно апдейт. Возможно, дебажные логи апдейтера смогут как-то пролить свет.

20211107 01:53:07 [INF] [ Loader ] Download file versions.xml from C:DrWeb-UpdatesUpdatesversions.xml to C:ProgramDataDoctor WebUpdaterrepoversions.xml.newer
20211107 01:53:07 [INF] [ Loader ] Timestamp zone is 20211103183753
20211107 01:53:07 [INF] [ Loader ] Zone C:DrWeb-UpdatesUpdates has valid timestamp for update
20211107 01:53:07 [INF] [ Loader ] Download file certificate.xml from C:DrWeb-UpdatesUpdatescertificate.xml to C:ProgramDataDoctor WebUpdaterrepocertificate.xml.newer
20211107 01:53:07 [INF] [ Loader ] Download file 90products.xml from C:DrWeb-UpdatesUpdates90products.xml to C:ProgramDataDoctor WebUpdaterrepo90products.xml.newer
Updater version: 12.0.12.08020, x64, Time : 07 November 2021  01:53:07
Computer name  : PC, User name : WORKGROUPPC$
Platform       : Microsoft Windows 10 Professional  18362, x64, Locale : 1049
Command line   :  -c postupdate --progress-to-console --verbosity=info --dws9 --interactive --host-guid=a5564af6-5497-4ec3-9d2e-a8439d75ddc2 --coutname=7C49CEAF1D257329
Copyright (c) Doctor Web, Ltd., 1992-2019
=============================================================================
20211107 01:53:07 [INF] [  Main  ] Logfile: C:ProgramDataDoctor WebLogsdwupdater.log
20211107 01:53:07 [INF] [  Main  ] Updater Run as interactive application [ PID: 5724 ]

  • Наверх

#8


Kord

Kord

    Newbie

  • Posters
  • 30 Сообщений:

Отправлено 06 Ноябрь 2021 — 20:07

При обновлении в 1:53:07 старый апдейтер падает на полпути, затем перезапускается и начинает 2-ю фазу (постапдейт), не завершив собственно апдейт. Возможно, дебажные логи апдейтера смогут как-то пролить свет.

Dmitry_rus, спасибо, что посмотрели.
В принципе для себя я нашёл выход из ситуации (сначала обновиться февральскими базами, затем — актуальными). Думаю, разработчикам будет не особо интересно тратить время на выяснение причин падения Updater’a двухлетней свежести на устаревшей ОС. Но если что, могу собрать дебажные логи :)

  • Наверх

#9


Afalin

Afalin

    Guru

  • Dr.Web Staff
  • 5 496 Сообщений:

Отправлено 07 Ноябрь 2021 — 12:44

Если там падение с heap corruption на этом products.xml, то совсем не интересно.

Семь раз отрежь – один раз проверь

  • Наверх

#10


SergSG

SergSG

    The Master

  • Posters
  • 14 381 Сообщений:

Отправлено 10 Ноябрь 2021 — 15:59

STATUS_FAILED_STACK_SWITCH

Структура зона-репы менялась и старый апдейтер об этом не в курсе.

  • Наверх

#11


Kord

Kord

    Newbie

  • Posters
  • 30 Сообщений:

Отправлено 10 Ноябрь 2021 — 21:52

STATUS_FAILED_STACK_SWITCH
Структура зона-репы менялась и старый апдейтер об этом не в курсе.

Тогда, по идее, апдейтер должен падать на любой ОС, но на Windows 7 проблем нет…

  • Наверх

#12


SergSG

SergSG

    The Master

  • Posters
  • 14 381 Сообщений:

Отправлено 10 Ноябрь 2021 — 22:54

STATUS_FAILED_STACK_SWITCH
Структура зона-репы менялась и старый апдейтер об этом не в курсе.

Тогда, по идее, апдейтер должен падать на любой ОС, но на Windows 7 проблем нет…

Это код системной ошибки — винда подавилась апдейтером. И падать, по идее, может на любой ОС, но могут быть и свои нюансы.

  • Наверх

#13


Afalin

Afalin

    Guru

  • Dr.Web Staff
  • 5 496 Сообщений:

Отправлено 11 Ноябрь 2021 — 09:49

В зависимости от положения звёзд оно может и не упасть.

Семь раз отрежь – один раз проверь

  • Наверх

#14


shonyv

shonyv

    Newbie

  • Posters
  • 81 Сообщений:

Отправлено 17 Ноябрь 2021 — 09:12

Сегодня не хочет доктор обновляться, все по инструкции сделал и ноль результата! А вот в панели управления не восстанавливается пишет ошибка 46

88c290627a83.gif В камень стрелять, стрелы терять!

  • Наверх

#15


VVS

VVS

    The Master

  • Moderators
  • 18 983 Сообщений:

Отправлено 17 Ноябрь 2021 — 09:24

Сегодня не хочет доктор обновляться, все по инструкции сделал и ноль результата! А вот в панели управления не восстанавливается пишет ошибка 46

Создайте новую тему, в которую сразу же приложите отчёт доктора.
Тема закрыта.
Модератор.

меня вот что возмутило.  что даже не начинают толком диалог сразу дампы…… © alehas777
———————————
Антивирус это как ремень безопасности — всего лишь увеличивает шансы выжить или получить менее тяжкую травму при аварии.
Есть, однако, категория людей, которые рассматривают средства безопасности как ауру неуязвимости. © basid

  • Наверх

Используйте CUDA сегодня, чтобы добиться негативных эффектов изображения

оглавление

описание проблемы

анализ проблемы

1. Результат расчета необъективен.

2. exited with code -1073740940 (0xc0000374)

решение

Резюме


описание проблемы

1. Результат расчета необъективен.

2. exited with code -1073740940 (0xc0000374)


анализ проблемы

1. Результат расчета необъективен.

cudaError_t supplementPix(uchar *c, const uchar *a, unsigned int size);

__global__ void supplementKernel(int *c, const int *a)
{
	int i = threadIdx.x;
         c [i] = 255-a [i]; // Постоянное вычисление вызовет ошибки вычислений, например 255-1 = 253
}

результат операции

Позже создайте объект cv :: Mat со всеми 255 и CV_8UC3 и извлеките массив данных как вычитаемое число.

cv::Mat mask = cv::Mat(rows, cols, CV_8UC3, cv::Scalar::all(255));
	// Постоянный расчет вызовет ошибки расчета, например 255-1 = 253
	 // Необходимо использовать массив для передачи параметров
const uchar* maskData = mask.data;

Результат операции правильный:

Но есть новые проблемы


2. exited with code -1073740940 (0xc0000374)

Найдите соответствующую информацию

《Exit code -1073740940》(https://www.baidu.com/link?url=ud0ZNzh-8ZJmrpFojN8F2uxyOQXEBoeSAJvhiVsvsVuvfXca6U5Kup3UsaBMU-vo5gH_gBCAsqPdI6BpPXtp1F7fBaksS_RFgEFb1IMWs7fKHORjUTdTzm8FmA_uhYQK2q7zXj2R1MSszMqTc7wnAJABHZw-HItOL8AzVBUG39yO2NnvitqXRJWrrv3JohHh&wd=&eqid=95880f450000d468000000055e85a6e6)

«VS сообщил об ошибке, что wntdll.pdb не был загружен, ntdll.dll0xC0000374: куча повреждена» (https://blog.csdn.net/luoye2333/article/details/89087530)

Начать отладку

После отладки было обнаружено, что ошибка памяти возникла после вызова метода CUDA, который вызывал ошибку, когда объект был уничтожен в конце программы.

Проверить функцию вызова CUDA

cudaError_t supplementPix(uchar *c, const uchar *a, const uchar *b, unsigned int size){
    cudaStatus = cudaMalloc((void**)&dev_c, size * sizeof(int));
    cudaStatus = cudaMalloc((void**)&dev_a, size * sizeof(int));
    cudaStatus = cudaMalloc((void**)&dev_b, size * sizeof(int));
    cudaStatus = cudaMemcpy(dev_a, a, size * sizeof(int), cudaMemcpyHostToDevice);
    cudaStatus = cudaMemcpy(dev_b, b, size * sizeof(int), cudaMemcpyHostToDevice);
    cudaStatus = cudaMemcpy(c, dev_c, size * sizeof(int), cudaMemcpyDeviceToHost);
}

Обнаружено, что при изменении кода шаблона int было изменено на uchar, а sizeof (int) было изменено.


решение

После модификации результат операции (успех)



Резюме

Когда возвращаемое значение программы выходит с кодом -1073740940 и ошибка отладки указывает 0xc0000374, что куча ntdll.dll повреждена, это означает, что это утечка памяти.

Особенно это приводит к ошибкам, когда объект уничтожается (т.е. release ()) в конце программы.


1) Скачайте последнюю версию лаунчера с главной страницы TLauncher

2) Нужно проверить, действительно ли у вас данная версия драйверов видеокарты. Нажимаем «Пуск» пишем в поиск «dxdiag. exe» и запускаем данную программу. В ней выбираем вкладку «Экран» (Монитор) и если находим такую надпись возле «Версии:» . 3.7849 (что и означает версию 378.49), то у вас проблема в драйверах! Переходите к следующему пункту.

3.1) Установите более новую версию драйвера, например 378.66, через их программу Geforce Experience.

Или второй вариант:

3.2) Так же, можно установить чуть более старую версию драйверов видеокарты, например 376.33. Ссылка для скачивания: https://www. nv >

На данной странице, вам придётся выбрать вашу модель видеокарты и версию операционной системы, нажать «Поиск» и скачать драйвера.

Если Ваша проблема остаётся актуальной, запросите поддержку у TLauncher:

Details

> [16:03:10] [Server thread/INFO]: Preparing spawn area: 100%

> [16:03:10] [Server thread/INFO]: Time elapsed: 22561 ms

> [16:03:13] [Server thread/INFO]: Changing view distance to 6, from 10

> [16:03:13] [Server thread/WARN]: Can’t keep up! Is the server overloaded? Running 2827ms or 56 ticks behind

> [16:03:15] [Server thread/INFO]: ****[local:E:e26e0339] logged in with entity id 401 at (34.5, 76.0, 22.5)

> [16:03:15] [Server thread/INFO]: ****joined the game

> [16:03:16] [Server thread/INFO]: Saving and pausing game.

> [16:03:16] [Server thread/INFO]: Saving chunks for level ‘New World’/overworld

> [16:03:16] [Client thread/INFO]: Loaded 0 advancements

[VersionManager] Refreshing versions locally.

[VersionManager] Versions has been refreshed (17 ms)

[Launcher] Launcher exited.

Tried almost everything, uinstalled java and installed few different versions, checked my drivers and all of them are the newest, tried something from internet videos what i saw. Does someone know?

Самая популярная песочница собрала внушительную армию фанатов, которая запускает миллионы игровых сессий ежедневно. Естественно, при таких масштабах нельзя обойтись без сбоев. Одной из популярных проблем является ошибка “Minecraft closed with exit code 1” или “TLauncher: произошла непредвиденная ошибка”, которая появляется при запуске TLauncher Forge любой версии. Сегодня мы постараемся рассказать о всех возможных причинах данного бага, а также покажем как устранить большинство из них.

Ошибка “Minecraft closed with exit code 1”

Причины ошибки в Майнкрафт

Сама ошибка указывает лишь на то, что произошел сбой. Конкретную информацию можно увидеть в информационном окне, где будет указанна сама причина. Источники проблемы могут быть разными, отчего пользователи получают различные уведомления:

Непредвиденная ошибка в TLauncher

В основном проблема появляется после смены версии ОС, применении системных обновлений или переходе на новую версию игрового лаунчера. Также стоит упомянуть про влияние модов и расширений.

Как исправить Minecraft closed with exit code 1

Мы собрали все отмеченные игроками решения, а описание сделали начиная с самых простых. Далее действуйте по-пунктам, каждый раз проверяя работоспособность игры.

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

Про смартфон — цены, обзоры и реальные отзывы покупателей

1) Скачайте последнюю версию лаунчера с главной страницы TLauncher

2) Нужно проверить, действительно ли у вас данная версия драйверов видеокарты. Нажимаем «Пуск» пишем в поиск «dxdiag. exe» и запускаем данную программу. В ней выбираем вкладку «Экран» (Монитор) и если находим такую надпись возле «Версии:» . 3.7849 (что и означает версию 378.49), то у вас проблема в драйверах! Переходите к следующему пункту.

3.1) Установите более новую версию драйвера, например 378.66, через их программу Geforce Experience.

Или второй вариант:

3.2) Так же, можно установить чуть более старую версию драйверов видеокарты, например 376.33. Ссылка для скачивания: https://www. nv >

На данной странице, вам придётся выбрать вашу модель видеокарты и версию операционной системы, нажать «Поиск» и скачать драйвера.

Если Ваша проблема остаётся актуальной, запросите поддержку у TLauncher:

Некоторые пользователи операционной системы Windows при запуске какого-либо приложения с правами администратора могут столкнуться с ошибкой «Ошибка файловой системы 1073741819». Довольно часто это происходит при переходе и соответствующем обновлении с Windows 7 на Windows 10, но бывают случаи, что с данной проблемой встречаются пользователями Windows 7 и Windows 8. В этой статье я расскажу, в чём суть ошибки 1073741819, каковы её причины, и как исправить ошибку файловой системы на ваших ПК.

Скриншот — Error code: — 1073741819

Причины ошибки файловой системы 1073741819

Наиболее часто с данной ошибкой встречаются пользователи ОС Виндовс 10, после перехода на неё с Виндовс 7. Возникновение данной ошибки не только мешает запуску программ с административными правами, но и просто не даёт установить в системе какой-либо новый софт. Каждый раз, когда пользователь пытается выполнить подобное, UAC (система контроля учётных записей пользователя) выдаёт ошибку 1073741819, по сути блокируя административную активность в операционной системе.

Основной причиной, как не странно, обычно является звуковая схема, которая перешла с вашей Windows 7 на Windows 10 при обновлении из одной ОС в другую. По определённым причина Виндовс 10 не способна проигрывать некоторые системные звуки звуковой схемы Виндовс 7, и, как результат, UAC блокирует административный доступ к системному функционалу.

Доступ заблокирован

Как исправить ошибку файловой системы 1073741819

В соответствии с вышеописанным, пресловутая ошибка файловой системы 1073741819 исправляется следующими способами:

Способ 1. Измените звуковую схему на «по умолчанию»

Для этого перейдите в «Панель Управления» – «Звуки», найдите там параметр «Звуковую схема» и установите на «По умолчанию» (или «Windows по умолчанию»). Рассматриваемая мной ошибка после этого должна пропасть.

Выбираем звуковую схему «По умолчанию»

Рекомендую также отключить уведомления UAC, для чего откройте стартовое меню, найдите и кликните на «Контроль учётных записей пользователя» (User Access Control), нажмите на «Изменение параметров контроля учётной записи» (Change User Access Control»), и установите ползунок в самое нижнее значение.

Способ 2. Измените рабочую тему ОС Windows

Способ 3. Отключите UAC

Выбираем «Никогда не уведомлять»

Способ 4. Создайте другой пользовательский аккаунт

Ещё одним, и довольно эффективным способом решения проблемы 1073741819, будет создание новой учётной записи и работа с ней. Обычно в новой «учётке» рассматриваемая мной проблема пропадает.

Способ 5. Измените параметры питания

Способ 6. Удалите AVAST

В довольно редких случаях причиной рассматриваемой проблемы выступал функционал антивируса AVAST, установленного на компьютере пользователя. Для избавления от ошибки 1073741819 рекомендуется полностью удалить данный антивирус с вашего компьютера, заменив его более стабильной альтернативой.

Заключение

Основным решением проблемы «Ошибка файловой системы 1073741819» является схема звуковой схемы, использующейся по умолчанию в ОС Windows. Если данный вариант не помог, попробуйте другие, перечисленные мной, советы, они помогут устранить ошибку 1073741819 на ваших ПК.

We are currently investigating the root cause of this issue. In order to solve this issue, some known workarounds include reinstalling the JVM or updating your graphics drivers, this error may also be caused by having «D3Dgear» installed.

How to fix this

Due to the quite vagueness of the error, we are unsure of the exact cause. Please try the following and attempt to see it they solve your case:

Reinstalling Java

Minecraft, runs on a platform called Java. Java comes in many shapes, and forms, which may make it confusing exactly which version of it you should have installed, which is what this should hopefully explain.

First, we want to find out our OS’s processor architecture.

If you are on Windows — Press your Windows + R keys, to bring up a run dialogue, in it, type in: «cmd«, and hit enter. This will bring up a command prompt window. In the window, type in: echo %processor_architecture% then hit enter.
If the output was amd64, you have a 64-bit OS. If the output was x86, you have a 32-bit OS.

If you are on Mac OSX — You have a 64-bit OS, all good!

Now that we have that, look at the diagram below, and download the proper Java version for your OS and processor architecture. If you are prompted that said version of Java is already installed, please uninstall your current version of Java and redo this step.

# 32 bit OS 64 bit OS
Windows jre-7u25-windows-i586.exe jre-7u25-windows-x64.exe
Mac OSX jre-7u25-macosx-x64.dmg
Linux jre-7u25-linux-i586.rpm jre-7u25-linux-x64.rpm

Once you have installed the proper Java version, you should give the game a go!

Источники:

https://window-10.ru/launcher-minecraft-closed-with-exit-code/

https://pro-smartfon. ru/minecraft-closed-with-exit-code-1073741819/


Большое спасибо заранее за надежные полезные мысли …. Кажется, у этого есть что-то. Теперь я понимаю, что проблема, вероятно, только незначительно связана с установкой с установщиком.

Алло,

Я уверен, что это не новичок, а идея? Независимо от того, что я делаю вместо этого, он принял скорость combi после длительного перезапуска x, все без успеха. Как вы думаете, на стороне производителя … при необходимости в режиме совместимости Lasco

Поэтому он, вероятно, имеет какое-то отношение к сканеру, потому что ошибка произошла, когда я хотел обновить Outlook.

Проблема в том, что я установщик, но что? Твен и драйвер WIA я не могу выдержать, несмотря на то, что сейчас почти 40 часов. Приветствие — больше не доступны. Кто-нибудь должен установить, если не предлагается драйвер Windows 10!

14393, калькулятор представляет собой ноутбук Satellite C 70 A. Система WIN 10 stand 1607 / test только после ручного ввода USB-порта, сканера нет. Пробовал компьютер определяет, что 100 больше не может устанавливать сканер. Все попытки с помощью антивирусного сканера и Malwarebytes проверяются без находок.

У меня есть некоторые подсказки для других инструментов обслуживания пользователей и т. Д.

Антивирус – это обязательная программа для всех компьютеров, с целью безопасной работы. Однако, для максимальной защиты, антивирус должен каждый день обновляться, а то и несколько раз на день, чтобы подгружать новые данные о вирусах и не упустить из виду новую угрозу. Функция автоматического обновления вирусных баз включена в каждый антивирус и Dr.Web не является тому исключением. Но что делать, если по каким-то причинам у вас перестал обновляться Доктор Веб? Можно ли самостоятельно устранить ошибку и наладить работу антивируса для защиты своего компьютера?

Содержание

  1. Почему не обновляется Dr.Web
  2. Способы решения проблемы
  3. Восстановление или перезагрузка программы
  4. Обновление вручную
  5. Устранение ошибок диска
  6. Обращение в техподдержку

Самой популярной причиной, почему антивирус не обновляется – это отсутствие интернет-соединения. Ведь вирусные базы берутся из сервера компании при помощи подключения к интернету. Еще одной причиной приостановки обновления антивируса является срок окончания лицензии программы. Но если вы точно уверены, что Dr.Веб исправно работал, лицензия не просрочена, вы самостоятельно не отключали обновление и компьютер подключен к интернету, то в чем же может быть проблема? Антивирус в результате системного сбоя может прекратить обновляться в привычном режиме, если произошло нарушение в скриптах, часть их повреждена и как результат – ошибка репозитория. Поэтому исправлять подобный сбой придется вручную.

Способы решения проблемы

Если вы столкнулись с ошибкой репозитория или другими словами ошибка 10, которая отвечает за обновление антивируса, то не стоит впадать в панику, реанимировать Доктор Веб вы сможете самостоятельно. Для этого ознакомьтесь с каждым из способов и выберите для себя оптимальный.

Восстановление или перезагрузка программы

Простым, но иногда действенным способом является перезапуск программы. Для этого нажмите на значок антивирус в правом нижнем углу панели и среди доступных функций, выберите выход. Теперь запустите утилиту и попробуйте нажать «Обновление». Если такой метод не сработал, тогда возьмемся за восстановление Доктора Web при помощи стандартных инструментов Windows:

  1. Нажимаете на кнопку «Пуск».
  2. Справа выбираете «Панель управления» или «Параметры» (далее «Система»), в зависимости от версии системы.
  3. В меню системы выбираете раздел «Программы» или «Установка и удаление программ».
  4. Переходите в него, после чего на экране появляется список всех приложений на компьютере.
  5. Выбираете «Dr.Web» и вверху нажимаете «Изменить», а после «Восстановить».
  6. На экране запустится процесс сканирования файлов программы.

Когда процесс восстановления антивируса завершится, обязательно перезагрузите компьютер и проверьте исправность обновления.

Обновление вручную

Если первый способ вам не помог, а вы хотите здесь и сейчас произвести обновление Dr.Веба, то в программе доступна функция ручного обновления. Что она подразумевает? Вам необходимо самостоятельно сохранить в отдельную папку на компьютере последнюю версию обновлений вирусных баз, а после в настройках антивируса указать место, откуда необходимо подтянуть обновление. Делается это следующим образом:

  1. Запустите Доктор Web.
  2. В левом нижнем углу интерфейса программы нажмите на замочек, чтобы он открылся, после справа выбираете «Настройки» (значок шестеренки).
  3. Переходите в раздел «Основные», а потом выбираете раздел «Обновление».
  4. В пункте «Источник обновлений» нужно внизу нажать на кнопку «Изменить» и выбрать следующий тип «Локальная или сетевая папка».
  5. Далее нажимаете «Обзор» и указываете папку на компьютере, где вы сохранили пакет последней вирусной базы.
  6. Нажимаете «Ок» и запускаете обновление.

При реализации такого метода обязательно выключите интернет, чтобы программа не пыталась каждую секунду связаться с сервером для автоматического обновления. Однако вы должны понимать, что такой способ поможет решить проблему с обновлением Доктора Web в одноразовом порядке, то есть, чтобы поддерживать актуальную версию антивирусных баз, вам нужно каждый раз скачивать новый пакет и помещать его в папку, откуда антивирус подтягивает обновления. Поэтому для надежной защиты компьютера нужно исправить эту проблему и вернуть автоматическое обновление Dr.Web.

Устранение ошибок диска

Теперь переходим к более сложному способу исправления ошибки обновления, однако, по отзывам многих пользователей, именно он оказался наиболее эффективным. Итак, что здесь нужно сделать? Если антивирус Доктор Web перестал обновляться без видимых на то причин, то возможно, что в момент системного сбоя повредились файлы на Локальном диске. Переходим к решению проблемы:

  1. Сначала запускаем проверку исправности жесткого диска. Открываете меню компьютера, на «Локальный диск C» ставите мышкой и переходите в «Свойства» при помощи правой кнопки.
  2. Далее выбираете «Сервис», а после «Проверить».
  3. Ждете окончания сканирования.

Если в результатах проверки система требует исправить неполадки, то переходим к действиям. В первую очередь нам нужно отключить в антивирусе такие компоненты, как «Самозащита» и «Превентивная защита», так как именно эти модули отвечают за внесение изменений в программу, а после перенастроить программу:

  1. Сначала отключите интернет.
  2. Справа на панели нажмите на иконку «Web».
  3. Открываете доступ к изменению настроек – нажимаете на замочек в левом нижнем углу, чтобы он открылся.
  4. Переходите в раздел «Компоненты защиты».
  5. Напротив пункта «Превентивная защита», переводим ползунок в неактивное положение.
  6. Теперь возвращаемся в меню настроек и выбираем раздел «Основные», и таким же образом деактивируем модуль «Самозащита».
  7. Далее повторяем шаги из первого способа по восстановлению программы, через меню «Пуск», «Установка и удаление программ» или «Система», в зависимости от платформы.
  8. Перезагружаете компьютер и проверяете на исправность – начинается автоматического обновление Доктора Web или нет.

Если данный способ помог исправить проблему, то обязательно верните прежние настройки антивирусу – включите «превентивную защиту» и модуль «Самозащита».

А если результат проверки не выявил отклонений в жестком диске или восстановление программы не помогло, то остается только одни вариант – переустановить антивирус Доктор Web. Для переустановки необходимо полностью удалить программу и заново ее установить. Чтобы после удаления утилиты не возникло проблем, и не сохранились остаточные файлы, необходимо дополнительно реестр. Если вы не знаете, как это делать, то просто воспользуйтесь специальными очищающими утилитами, например, CCleaner или Master Clean, которые не только почистят компьютер от мусора, но помогают правильно провести процесс деинсталляции. Также для этих целей существует специально разработанная программа от компании Dr.Веб – Web Remover.

Обращение в техподдержку

Ну и последний вариант, который спасает при неэффективности всех предыдущих, это обращение в техподдержку сервиса Dr.Web. Специалисты технической службы помогут разобраться с вашей проблемой и предложат ее устранение. Однако процесс обращения в техподдержку заточен в виде отправки специального отчета, а не как это обычно бывает в виде написания обращения. То есть, вам нужно воспользоваться приложением DwSysInfo, где формируется отчет об ошибке работы антивируса и отсылается в компанию. После рассмотрения с вами связывается сотрудник сервиса и устраняет проблему. Преимущества обращения в техподдержку является и то, что специалист может получить дистанционный доступ к вашему компьютеру и «напрямую» настроить автоматическое обновление.

( 1 оценка, среднее 5 из 5 )

Код ошибки 1073740940 (-1073740940, если быть точнее) может возникать в Minecraft по самым разным причинам, однако чаще всего ее вызывает следующее:

  • устаревшая версия Java;
  • недостаток выделенной оперативной памяти;
  • конфликтующие с игрой модификации.

Итак, что можно сделать, чтобы избавиться от ошибки 1073740940? Во-первых, вам нужно обновить версию Java на своем компьютере. Возможно, вы решили поиграть в Minecraft на только что установленной ОС, и еще не успели установить актуальную версию Java.

Также можно попробовать выделить чуть больше оперативной памяти для игры. Запустите лаунчер Minecraft и перейдите в раздел загрузок. У последнего релиза кликните на значок ••• и выберите «Редактировать». Опуститесь к строке аргументов JVM и вставьте в пустую строку значение -Xmx4G или -Xmx8G (зависит от объема ОЗУ в вашем ПК). Сохраните изменения и запустите игру.

Согласно сообщениям в сети, некоторые модификации также способны вызывать появление кода 1073740940 в Minecraft. К примеру, после продолжительных исследований, ребята на Reddit определили, что данную ошибку может вызывать мод Supplementaries (от MehVahdJukaar). Решение — удаление проблемного мода либо установка его другой версии.

Dr.Web считается российским разработчиком антивирусных программ, сервисов для предоставления информационных услуг корпоративным, частным пользователям. Кроме того, “Доктор Веб” – популярная антивирусная программа, установка которой нередко сопряжена с неполадками. Ниже представлены популярные коды ошибок Dr.Web и их расшифровка.

Содержание

  1. Ошибка 2
  2. Ошибка 9
  3. Ошибка 10
  4. Ошибка 11
  5. Ошибка 12
  6. Ошибка 16
  7. Ошибка 32
  8. Ошибка 33
  9. Ошибка 110
  10. Ошибка 902
  11. Ошибка 914
  12. Ошибка 1066
  13. Ошибка 1722
  14. Ошибка 1726
  15. Ошибка 12002
  16. Ошибка 12007
  17. Ошибка 12029
  18. Ошибка 12152

Ошибка 2

Ошибка dr web 2 свидетельствует о сбое в процессе обновления. Она вызывается несколькими причинами. Чтобы ее исправить, необходимо проверить доступность сети, правильность настроек прокси при их использовании. Если сеть доступна, прокси настроен правильно, необходимо выполнить ряд действий, направленных на восстановление системы с антивирусом. Возможно, проблема исчезнет.

Коды ошибок Dr.Web

Устранить проблему можно тремя путями:

  1. Произвести проверку жесткого диска, используя утилиту chkdsk. Чтобы проверить диск, необходимо ввести команду chkdsk C: /F /R в поисковике Виндовс, зажав клавиши Виндовс+R. Утилита предложит проверить диск после перезагрузки. С действием нужно согласиться. При загрузке появится сообщение о проверке диска, которую можно отменить, нажав любую клавишу. После проверки диска, следует перегрузить систему и протестировать его.
  2. Выполнить восстановление антивирусника. Для этого нужно открыть Пуск, перейти в Панель Управления, Программы и компоненты. Далее нажать Изменить и Восстановить программу. После восстановления системы перегрузить ОС и проверить, как работает антивирусник.
  3. При сохранении неполадки в обновлении, следует нажать на антивирусный значок справа внизу, потом зайти в Центр безопасности. Там найти значок замок, потом шестеренку. В разделе Общие нажать на Дополнительные настройки, Журнал, Изменить. У флажка с обновлением антивирусника кликнуть на флажок и сохранить настройки. Далее нужно повторить попытку обновления. После появления кода 2 сформировать отчет, выбрав Поддержку, Создать отчет. Далее обратиться в службу поддержки.

Коды ошибок Dr.Web

Ошибка 9

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

  1. Щелкнуть по значку программы справа внизу правой кнопкой мыши;
  2. Перейти в режим администратора, щелкнуть по замку, далее – по шестеренке;
  3. Выбрать раздел Сеть, далее кликнуть на параметр использования прокси-сервера, корректно настроить соединение сети.

Важно! Если прокси не применяется, следует проверить сетевое соединение и при необходимости настроить его.

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

Ошибка 10

Суть проблемы состоит в репозиторие, сбое в скриптах, отсутствии некоторых из них. Решать проблему необходимо, переустановив антивирус. Для решения вопроса, следует скачать с официального сайта антивирусную программу. Удалить предыдущую версию программы, сделать перезагрузку компьютера, далее запустить антивирус и при установке указать путь к файлу. Сделать повторную перезагрузку компьютера.

Коды ошибок Dr.Web

Ошибка 11

Проблема заключается в невозможности обновления антивирусных компонентов. Код 11 высвечивается по ряду причин. Нередко его появление связано с использованием устаревшей антивирусной версии или с повреждением файлов. Если используется устаревшая версия антивируса, необходимо удалить старую и закачать новую программу.

Если файлы повреждены вследствие проблем с диском, следует исправить все ошибки диска, восстановить антивирусную систему. Восстановление можно провести через следующую пошаговую инструкцию: Пуск, Панель управления, Программы и компоненты, Dr.Web, Изменить, Восстановить. После восстановления, потребуется перезагрузить персональный компьютер, проверить, как работают обновления.

Коды ошибок Dr.Web

Ошибка 12

Суть вопроса в блокировке лицензии. Зачастую она возникает при отсутствии ее активации, активации старой, лицензированной версией, использовании лицензии на другом персональном компьютере. Если не активирована лицензия, необходимо активировать ее через менеджер лицензий. Достаточно удалить заблокированную лицензию и оставить одну действующую.

Если проблема заключается в автоматически блокируемой лицензии, необходимо указать новую при антивирусной регистрации через Менеджер лицензий. Если используемое разрешение было использовано раньше на другом персональном компьютере, необходимо обратиться в техническую поддержку, приложив документы, подтверждающие владение лицензией.

Ошибка 16

По этой ошибке установить и работать с антивирусом невозможно из-за действия сторонних программ. Есть несколько основных причин, почему возникает неполадка. В системе могут находиться другие антивирусы или частично установленные файлы. Также в системе могут находиться вредоносные ПО, блокирующие установку антивирусной программы. Необходимо использовать бесплатную утилиту, чтобы очистить персональный компьютер от вирусов, после чего повторить установку.

Коды ошибок Dr.Web

Ошибка 32

32 ошибка Доктор Веб заключается в неполадке установке или восстановлении антивирусной программы. Она появляется, если есть критические повреждения в момент невозможности установки, восстановления продукта по каким-то причинам. Следует загрузить, установить утилиту, после чего перезагрузить персональный компьютер, повторно установить программу.

Ошибка 33

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

Коды ошибок Dr.Web

Ошибка 110

110 неполадка связана с неполадкой установки серверных продуктов. Она вызывается разными причинами, поэтому необходимо обратиться в техническую поддержку, приложить отчет, который создан с помощью утилита.

Ошибка 902

Суть неполадки состоит в неправильной установке, удалении. Она возникает, если повреждаются антивирусные файлы, не полностью или некорректно был удален старый антивирус.

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

Ошибка 914

Коды ошибок Доктор Веб 914 и 910 говорят о том, что произошел сбой компонентов продукта. В такой ситуации необходимо переустановить антивирус.

Если удаление с помощью стандартных средств оканчивается неудачей, следует скачать официальную утилиту и перезагрузить персональный компьютер. Если код продолжает высвечиваться, программисты советуют написать в службу поддержки.

Ошибка 1066

Неполадка связана с невозможностью установки антивируса, если есть несовместимое программное обеспечение с утилитой. Зачастую проблема возникает с агента Доктора Веб, если на ПК уже установлен другой антивирусник. Необходимо выполнить его удаление, а позднее – повтор попытки установки Доктора Веб.

Коды ошибок Dr.Web

Если появляются сложности или невозможно определить несовместимую программу, следует обратиться к специалистам службы технической поддержки.

Ошибка 1722

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

Ошибка 1726

Ошибка связана с некорректным запуском программы. Причинами служат основные четыре пункта. Неполадка связана с поврежденной загрузкой или неполной установкой программного обеспечения, повреждением реестра Доктор Веб из-за установки или удаления утилиты.

Может появляться из-за наличия в системы вируса, вредоносного программного обеспечения, повреждения файла Виндовс или удаления файлов утилиты другой программой.

Ошибка может быть связана с другими факторами, поэтому при совершении всех действий, направленных на решение возникшей проблемы, следует обратиться в техническую поддержку.

Что можно сделать? Специалисты рекомендуют в такой ситуации восстановить записи реестра, полностью просканировать компьютер на вирусы, очистить ПО от временных файлов, папок и другого мусора. Они советуют также обновить драйверы компьютера, использовать Восстановление Виндовс системы для отмены последних изменений в ПО, переустановить программу заново, запустить проверку системных Виндовс файлов, установить доступные Виндовс обновления и произвести чистую установку Виндовс.

Ошибка 12002

Суть заключается в неполадке с сетью, неправильной настройке сетевых соединений, неверно выбранных параметров серверного прокси, особенностью настройки сетевого подключения. Специалисты рекомендуют по этой проблеме проверить доступность интернет-сети, настройку брандмауэра, серверного прокси.

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

Коды ошибок Dr.Web

Ошибка 12007

Неполадка возникает из-за отсутствия доступа к сети, неправильной настройки сетевых соединений, неверных параметров серверного прокси, особенности настройки сетевого подключения на рабочем месте. При возникновении подобной ошибки необходимо проверить доступность интернет-сети, настроек брандмауэра, серверного прокси.

Коды ошибок Dr.Web

Важно! Если перечисленные выше действия были проделаны, а неполадка не исправлена, специалисты рекомендуют обратиться в службу технической поддержки. Для того чтобы сотрудники смогли оперативно помочь в ситуации, инженеры рекомендуют заранее делать подробный отчет о проделанных ранее действиях для устранения появляющегося кода при запуске утилиты.

Ошибка 12029

Ошибка связана с сетевыми неполадками, неправильной настройкой сетевых соединений, неверными параметрами серверного прокси. Нередко она сопряжена с тем, что пользователю не удается настроить сетевое подключение на рабочем столе. Также часто она связана с ошибкой в модуле обновления. Специалисты рекомендуют в таком случае действовать двумя путями:

  • Проверить доступность интернет – соединения, брандмауэрных настроек и серверного прокси;
  • Написать в службу технической поддержки для выяснения обстоятельств невозможности корректной работы антивирусника.

При сохранении ошибки, инженеры рекомендуют сделать переустановку антивируса. В таком случае следует скачать с сайта актуальный антивирусный дистрибутив. Потом удалить Доктор Веб предыдущей версии, используя “Панель управления”, “Установку и удаление программ”. Затем перезагрузить компьютер, скачать, запустить утилиту, перезагрузить компьютер, запустить антивирус и еще раз сделать перезагрузку операционной системы устройства.

Важно! Если после переустановки ошибка продолжит появляться, следует сделать отчет через DwSysInfo и отправить его специалистам службы техподдержки.

Коды ошибок Dr.Web

Ошибка 12152

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

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

Ошибки, связанные с лицензией

Ошибка 0

Невозможно зарегистрировать лицензию через Мастер регистрации с помощью лицензионного кода, нужен ключевой файл. Проблема актуальна для ПК под управлением Windows XP.

Решение:

Из-за ограничений Windows XP активация лицензии непосредственно через Мастер регистрации антивируса в настоящее время невозможна. Пройдите по ссылке Регистрация серийного номера, зарегистрируйте лицензию и подтвердите отправку ключевого файла на ваш электронный адрес. После регистрации на указанный вами при первой регистрации адрес придет электронное письмо с ключевым файлом, который и нужно будет указать в Мастере регистрации антивируса.

Если у вас еще не установлен Dr.Web версии 11.5, настоятельно рекомендуем скачать с нашего сайта ее дистрибутив и установить в системе вместо устаревшей версии.

Операционная система Windows XP катастрофически устарела. В ней имеются незакрытые уязвимости, через которые легко могут проникать новые вредоносные программы, еще не попавшие в базы антивирусов. Компания Microsoft с апреля 2014 года полностью прекратила поддержку Windows XP. Это означает, что для данной системы практически полностью прекращен выпуск обновлений, исправляющих обнаруживаемые в системе уязвимости, так что обеспечить надежную защиту этой ОС сегодня практически невозможно.

Для работы в интернете (особенно если на компьютере ведется работа с банковскими или платежными системами) настоятельно рекомендуем использовать компьютеры с более современными и более безопасными версиями Windows или перевести работу с интернетом и платежными системами на ПК под управлением Linux или macOS. Если же по какой-то причине необходимо использование именно Windows XP, нужно обязательно установить в системе все выпущенные для нее обновления, а также соответствующими техническими средствами ограничить доступ с этого компьютера в интернет только необходимыми для работы сайтами.

Ошибки 2, 5, 9, 13, 22, 38, 62, 71, 90, 125, 999-1018, 1900

Ошибка при взаимодействии с сервисом.

Решение:

Попробуйте повторить попытку позже или обратитесь в службу технической поддержки, приложив к запросу отчет утилиты DwSysInfo.

Как создать отчет SysInfo?

Ошибка 12

Лицензия заблокирована.

Чаще всего ошибка возникает по следующим причинам:

  1. Лицензия не активирована.

    Решение:

    Активируйте новую лицензию в Менеджере лицензий Dr.Web и удалите из него истекшую (или заблокированную) лицензию. В списке лицензий должна остаться только одна, действующая лицензия.

  2. После переустановки антивируса он активируется старой, уже продленной лицензией.

    Решение:

    Если вы приобрели продление лицензии, то она автоматически блокируется, а оставшийся срок ее действия прибавляется к сроку действия новой лицензии. То есть при попытке активировать антивирус старой лицензией возникает ошибка. Укажите новую лицензию при регистрации антивируса или укажите новую лицензию в качестве основной в Менеджере лицензий.

  3. Лицензия была использована ранее на другом ПК. Такое случается, когда по ошибке было приобретено продление на 1 ПК на 2 года при необходимости защитить 2 ПК.

    Решение:

    Обратитесь в службу технической поддержки с запросом на разделение лицензии. К запросу приложите документы, подтверждающие, что вы являетесь владельцем лицензии.

    Внимание! После разделения лицензии (2 года /1 ПК) она будет заблокирована, а взамен вы получите две новых лицензии (2 ПК / 1 год).

Ошибка 13

В Менеджере лицензий Dr.Web нет ни одной действующей лицензии.

Решение:

Зарегистрируйте новую лицензию в Менеджере лицензий Dr.Web.

Ошибка 105

С ошибкой могут столкнуться пользователи демолицензий. Cистемный хэш не совпадает с системным хэшем, с которым проводилась первичная активация (попытка использовать серийный номер демо на еще одном компьютере или после смены ОС).

Две основных причины:

  1. Демонстрационный период, соответствующий указанному серийному номеру, уже активирован на другом компьютере. Использование демоключа на двух ПК является нарушением условий использования демо.

    Решение:

    • Если другому вашему компьютеру нужна защита Dr.Web, запросите демо с него.
    • Если на таком компьютере вы уже использовали право на одно демо в течение одного года, чтобы ваш компьютер не оставался без защиты Dr.Web, рекомендуем приобрести лицензию Dr.Web.
  2. Обновление ОС Windows. При этом ошибка чаще всего возникает на Windows 10 после установки очередного крупного обновления.

    Решение:

    Нужно заново оформить демонстрационный серийный номер на нашем сайте и активировать его.

    Особенно часто ошибка возникает на Windows 10, так как к ней часто выходят обновления, меняющие номер версии, отчего антивирус перестает «узнавать» систему, но хэш ПК сохраняется, и повторно зарегистрировать лицензию нельзя.

Ошибка 400

Превышено количество попыток активации серийного номера.

Решение:

Активируйте серийный номер с помощью ключевого файла или отправьте письменную заявку в службу технической поддержки.

Ошибка 401

В качестве основания для продления указана уже продленная лицензия.

Решение:

Продлить лицензию можно только один раз, так что при попытке повторно указать ее сервер вернет ошибку 401. При следующем продлении указывать следует ту актуальную лицензию, с помощью которой продлевали предыдущую.

Для коробочных продуктов с двумя лицензиями:

Вторая лицензия в этом случае должна регистрироваться как новая, без бонуса за продление.

Ошибка 402

В качестве основания для продления указана заблокированная лицензия.

Решение:

Отправьте письменную заявку в службу технической поддержки.

Ошибка 404

Ошибка при вводе серийного номера. Её можно увидеть как в Менеджере лицензий, так и на официальном сайте.

Решение:

Проверьте правильность ввода серийного номера и соответствующего ему регистрационного e-mail. Попробуйте повторить попытку ввода чуть позже.

При необходимости отправьте письменную заявку в службу технической поддержки.

Ошибка 405

Неверный метод запроса.

Решение:

Отправьте письменную заявку в службу технической поддержки.

Ошибка 406

При продлении: предоставленные данные не совпадают с продлеваемым продуктом.

Решение:

Убедитесь в правильности введенного адреса e-mail (опечатки, ошибки в домене почты и т. д.). При необходимости отправьте письменную заявку в службу технической поддержки.

Ошибка 410

В качестве основания для продления была указана ещё не зарегистрированная лицензия.

Решение:

Зарегистрируйте лицензию, которую планируете продлевать.

a

Ошибка 415

В качестве основания для продления была указана ранее продлённая лицензия.

Решение:

Продлить лицензию можно только один раз. При следующем продлении указывать следует ту актуальную лицензию, с помощью которой продлевали предыдущую.

Ошибка 452

Невозможно обновить вирусные базы на Агентах при использовании Dr.Web Enterprise Security Suite. Проявляется после обновления лицензии — старая блокируется, а оставшееся время добавляется к новой лицензии. Но если новая лицензия не была распространена на станции, то Агенты на них не будут обновляться.

Решение:

Распространить действие новой лицензии на все станции Антивирусной сети.

Ошибки 500 — 501

Внутренняя ошибка сервера.

Решение:

Отправьте письменную заявку в службу технической поддержки.

Ошибка 592

Для демоверсий: с момента получения предыдущего демо прошло менее года.

Решение:

Чтобы ваш компьютер не оставался без защиты Dr.Web, рекомендуем приобрести лицензию Dr.Web.

Ошибка 607, 614

Ключ-приложение как основание для продления или получения демо неверен.

Решение:

Отправьте письменную заявку в службу технической поддержки.

Ошибка 615

В качестве основания для продления указана заблокированная лицензия.

Решение:

Отправьте письменную заявку в службу технической поддержки.

Ошибка 616

Серийный номер не соответствует продукту. Возникает, например, при попытке продлить лицензию на Антивирус Dr.Web для Linux с указанием ключевого файла от Dr.Web Mobile Security.

Решение:

Зарегистрируйте серийный номер через наш сайт, после чего на указанный e-mail будет отправлен лицензионный ключевой файл (drweb32.zip).

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

Подробнее об активации с помощью ключевого файла можно прочитать в документации.

Ошибка 617, 618

В качестве основания для продления использована лицензия сроком менее 3 месяцев.

Решение:

Продлеваемая лицензия должна иметь период действия более 3 месяцев.

Ошибка 619

Число объектов продлеваемой лицензии не совпадает с числом объектов новой лицензии.

Решение:

Для продукта Dr.Web Enterprise Security Suite лицензия продления со скидкой предоставляется на число защищаемых объектов, не превышающее число защищаемых объектов, указанное в прежней (продлеваемой) лицензии. С общими условиями продления со скидкой можно ознакомиться по ссылке.

Ошибка 620

Ключ-приложение как основание для продления или получения демо неверен.

Решение:

Отправьте письменную заявку в службу технической поддержки.

Ошибка 621

Неверно введен серийный номер.

Решение:

Обратите внимание, что серийный номер необходимо вводить, используя заглавные буквы и знак «-» для разделения полей ключа.

Ошибка 623

Недопустимый адрес e-mail.

Решение:

Проверьте вводимый адрес на предмет опечаток. При необходимости отправьте письменную заявку в службу технической поддержки.

Ошибка 625

Два возможных варианта:

  1. Непредвиденная ошибка взаимодействия с лицензионным сервером.

    Решение:

    Отправьте письменную заявку в службу технической поддержки.

  2. В качестве основания для продления указана уже продленная лицензия.

    Решение:

    Продлить лицензию можно только один раз. При следующем продлении указывать следует ту актуальную лицензию, с помощью которой продлевали предыдущую.

Ошибка 626

Прикладываемая (в качестве основания для продления / получения бонуса) лицензия несовместима с продлеваемым продуктом.

Решение:

Отправьте письменную заявку в службу технической поддержки.

Ошибка 1403

Ошибка возникает в процессе приобретения продления, если в качестве основания указан номер уже продленной лицензии.

Решение:

Убедитесь, что используете в качестве основания для продления текущий серийный номер.

Ошибка 1404

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

Решение:

Чтобы активировать Dr.Web, используйте новый серийный номер, который вы получили после оплаты продления.

Если вы не можете найти свой серийный номер, воспользуйтесь сервисом его восстановления.

Ошибка 1405

Срок действия ключевого файла по указанному серийному номеру истек.

Решение:

Используйте актуальный серийный номер, если он у вас есть. В противном случае продлите истекшую лицензию или приобретите новую.

Ошибки >12000

Ошибки Microsoft Windows HTTP (WinHTTP). Возможно, неполадки с сетью, неправильная настройка сетевых соединений, неверные параметры прокси сервера.

Решение:

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

Как создать отчет SysInfo?

Коды и описание ошибок для продуктов Dr.Web под Windows

Ошибки при установке

Семейство продуктов для Windows (Dr.Web Home Security Suite / Dr.Web Security Space), KATANA
Ошибка 1

Ошибка активации серийного номера через приложение.

Решение:

Попробуйте использовать ключевой файл вместо серийного номера.

Ключевой файл можно найти во вложении к письму о регистрации лицензии, его также можно получить по ссылке, использовав действующий серийный номер.

Если ошибка сохраняется, обратитесь в службу технической поддержки, приложив к запросу отчет утилиты DwSysInfo.

Как создать отчет SysInfo?

Ошибка 11

Не получилось отключить режим самозащиты.

Решение:

Убедитесь, что используется релизная версия инсталлятора (один из способов получить релизную версию — через Мастер скачиваний).

Если ошибка сохраняется, проведите проверку жесткого диска на наличие ошибок с помощью утилиты chkdsk:

  1. Вызовите командную строку от имени администратора. Для этого откройте Пуск → Все программы — Стандартные, нажмите правой кнопкой мыши на Командную строку. В открывшемся меню выберите Запуск от имени администратора.
  2. Для проверки диска C:/ выполните следующую команду:
    chkdsk C: /F /R
    Утилита предложит осуществить проверку диска C:/ при следующей загрузке компьютера. Согласитесь и перезагрузите компьютер. При загрузке начнется проверка диска. Отменять ее не нужно, необходимо дождаться окончания проверки.

Если ошибка сохраняется, обратитесь в службу технической поддержки, приложив к запросу отчет утилиты DwSysInfo.

Как создать отчет SysInfo?

Ошибка 13

Не получилось включить режим самозащиты.

Решение:

Обратитесь в службу технической поддержки, приложив к запросу отчет утилиты DwSysInfo.

Как создать отчет SysInfo?

Ошибка 16

Установка и работа антивируса невозможна.

Одна из вероятных причин — установке и работе антивируса препятствуют сторонние программы, наличие в системе других антивирусов или их следов после неудачной попытки удаления, вирусная активность.

Решение:

  1. Если в системе есть папка C:ProgramDataDoctor Web, удалите ее.
    (Как включить отображение скрытых и системных файлов?)

    1. Откройте поисковую строку Windows через меню Пуск или сочетанием клавиш Win+S.
    2. Введите в поисковой строке «Параметры папок» и откройте этот раздел.
    3. Откройте вкладку Вид. В разделе Дополнительные параметры установите флажок Показывать скрытые файлы, папки и диски, снимите флажок Скрывать защищенные системные файлы, затем нажмите ОК.
  2. Проверьте наличие других установленных антивирусов в системе. Сторонний антивирус следует удалить штатными средствами Windows или соответствующей утилитой удаления. Если удаление завершается ошибкой, обратитесь в службу поддержки того антивируса, который вы использовали.
  3. Используйте бесплатную утилиту Dr.Web CureIt!, чтобы исключить влияние вирусов, блокирующих установку антивируса. Повторите попытку установки.
  4. Настройте запуск системы в режиме чистой загрузки, чтобы исключить влияние различного ПО на работу системы, следуя рекомендациям Microsoft. Для этого:
    1. На вкладках Службы и Автозагрузка снимите флажки со всех элементов, кроме Microsoft.
    2. Перезагрузите компьютер.
    3. После запуска системы в режиме чистой загрузки попробуйте установить антивирус еще раз.

Если ошибка сохраняется, обратитесь в службу технической поддержки, приложив к запросу отчет утилиты DwSysInfo.

Как создать отчет SysInfo?

Ошибка 32

Возникает при критических повреждениях, когда завершить установку или восстановить продукт по каким-то причинам уже невозможно.

Решение:

Исключите возможные проблемы с диском, на котором проводится установка, с помощью утилиты chkdsk:

  1. Вызовите командную строку от имени администратора. Для этого откройте Пуск → Все программы — Стандартные, нажмите правой кнопкой мыши на Командную строку. В открывшемся меню выберите Запуск от имени администратора.
  2. Для проверки диска C:/ выполните следующую команду:
    chkdsk C: /F /R
    Утилита предложит осуществить проверку диска C:/ при следующей загрузке компьютера. Согласитесь и перезагрузите компьютер. При загрузке начнется проверка диска. Отменять ее не нужно, необходимо дождаться окончания проверки.

Если антивирус присутствует в списке установленных приложений, выполните полное удаление антивируса штатными средствами системы. Если удаление не прошло, скачайте и запустите утилиту экстренного удаления. Перезагрузите компьютер и повторите установку.

Если ошибка сохраняется, обратитесь в службу технической поддержки, приложив к запросу отчет утилиты DwSysInfo.

Как создать отчет SysInfo?

Ошибка службы BFE при установке

Для функционирования некоторых компонентов программы Dr.Web необходимо наличие запущенной службы базового модуля фильтрации (BFE). В случае если данная служба отсутствует или повреждена, установка Dr.Web будет невозможна. Повреждение или отсутствие службы BFE может указывать на наличие угроз безопасности вашего компьютера.

Если попытка установки программы Dr.Web завершилась с ошибкой службы BFE, выполните следующие действия:

  1. Просканируйте систему при помощи лечащей утилиты CureIt! от компании «Доктор Веб». Скачать утилиту вы можете на сайте.
  2. Восстановите службу BFE. Для этого вы можете воспользоваться утилитой для устранения проблем в работе брандмауэра от компании Microsoft (для операционных систем Windows 7 и выше).
  3. Запустите Мастер установки Dr.Web и произведите установку согласно штатной процедуре, приведенной выше.

Если ошибка сохраняется, обратитесь в службу технической поддержки, приложив к запросу отчет утилиты DwSysInfo.

Как создать отчет SysInfo?

Корпоративные продукты (Dr.Web Enterprise Security Suite) — ошибки при установке Агента
Ошибка 140

Не получилось распаковать репозиторий в каталог %ProgramData%Doctor WebUpdaterrepo.

Возможные причины: следы предыдущих установок продукта и/или отсутствие прав на запись в директорию. Также к появлению ошибки могут привести проблемы непосредственно с дистрибутивом.

Решение:

  1. Проверьте, существует ли в системе каталог C:ProgramDataDoctor Web (каталог ProgramData по умолчанию является скрытым).
  2. Если каталог существует:
    • проверьте, нет ли ограничений на запись для ProgramData и Doctor Web;
    • проверьте, не менялся ли владелец каталога;
    • попробуйте удалить каталог C:ProgramDataDoctor Web.
  3. Если проблема сохраняется, запустите утилиту удаления Dr.Web для Windows.
  4. После перезагрузки ОС попробуйте повторить установку.
  5. При повторении проблемы попробуйте заново загрузить дистрибутив и повторить установку.

Обратите внимание: установке также может препятствовать стороннее ПО.

Если установка по-прежнему завершается ошибкой, обратитесь в службу технической поддержки, приложив к запросу отчет утилиты DwSysInfo.

Как создать отчет SysInfo?

Ошибка 142

Не получилось записать значение InstallId в ветку HKLMSOFTWAREDoctor WebSettingsEs

Возможная причина: установке мешают следы модуля самозащиты в системе.

Решение:

  1. Скачайте и запустите утилиту удаления Dr.Web для Windows.
  2. Повторите попытку установки.
  3. Если ошибка сохраняется и/или запустить утилиту удаления не удается, обратитесь в службу технической поддержки, приложив к запросу отчет утилиты DwSysInfo.

Как создать отчет SysInfo?

Ошибки 144, 146

В подкаталогах репозитория отсутствует файл drwupsrv.exe.lzma нужной версии и разрядности (либо он не был загружен в случае установки по сети, либо не был распакован из дистрибутива).

Возможные причины: ошибки на жестком диске или нестабильное подключение к сети.

Решение:

  1. Проведите проверку жесткого диска на наличие ошибок с помощью штатной утилиты chkdsk.
    • Откройте Пуск → Все программы → Стандартные. Щелкните правой кнопкой мыши пункт Командная строка и выберите Запуск от имени Администратора.
    • Для проверки тома C: введите следующую команду:
      chkdsk C: /F /R
    • При этом утилита предложит осуществить проверку диска «C:» при следующей загрузке. Согласитесь и перезагрузите ПК.
    • Дождитесь окончания проверки и загрузки ОС.
  2. Скачайте и запустите утилиту удаления Dr.Web для Windows. После завершения ее работы перезагрузите компьютер.
  3. Повторите попытку установки антивируса.

Вы также можете использовать для установки полный инсталляционный пакет Агента.

Если ошибка сохраняется, обратитесь в службу технической поддержки, приложив к запросу отчет утилиты SysInfo.

Как создать отчет SysInfo?

Ошибки 150, 156

Не получилось записать изменения по адресу HKLMSOFTWAREDoctor WebInstalledComponents

Возможная причина: установке мешают следы приложения Dr.Web, установленного в системе ранее.

Решение:

  1. Скачайте и запустите утилиту удаления Dr.Web для Windows.
  2. Повторите попытку установки.
  3. Если ошибка сохраняется и/или применить утилиту не удается, обратитесь в службу технической поддержки, приложив к запросу отчет утилиты SysInfo.

Как создать отчет SysInfo?

Ошибка 162

Не удалось прочитать открытый ключ (drwcsd.pub).

Решение:

  1. Убедитесь, что используется релизная версия инсталлятора. В частности, проверьте актуальность репозитория по инструкции, по необходимости выполните обновление и повторите загрузку инсталлятора.
  2. Скопируйте файл drwcsd-certificate.pem (сертификат) или drwcsd.pub (открытый ключ) из каталога C:Program FilesDrWeb Serverwebmininstall в каталог, где лежит инсталлятор Агента Dr.Web.
  3. Попробуйте повторить установку, указав в качества адреса сервера его IP-адрес, а на запрос сертификата — сохранённый сертификат.

Если ошибка сохраняется, обратитесь в службу технической поддержки, приложив к запросу отчет утилиты SysInfo.

Как создать отчет SysInfo?

Ошибки 900, 902

Во время выполнения RunUpdaterAction произошла неизвестная ошибка.

Возможная причина: наличие в системе следов приложения Dr.Web.

Решение:

  1. Запустите утилиту удаления Dr.Web для Windows.
  2. Выполните перезагрузку ОС по требованию.
  3. Если ошибка сохраняется, проведите проверку жесткого диска на наличие ошибок с помощью утилиты chkdsk.
    • Для проверки тома C: выполните команду:
      chkdsk C: /F /R
    • Введите команду в окне командной строки Windows (нажмите сочетание клавиш Win+R → введите cmd → нажмите ОК) и нажмите Enter.
    • При этом утилита предложит осуществить проверку диска «C:» при следующей загрузке. Согласитесь и перезагрузите ПК.
    • Дождитесь окончания проверки и загрузки ОС.
    • Перезагрузите ПК, перед запуском ОС начнется тестирование диска.

Если ошибка сохраняется, обратитесь в службу технической поддержки, приложив к запросу отчет утилиты SysInfo.

Как создать отчет SysInfo?

Ошибка в работе антивируса после завершения установки

Установка завершается успешно, на иконке Dr.Web появляется желтый треугольник с восклицательным знаком. При наведении на значок можно увидеть текст «Ошибка» (после основной информации), в ленте уведомлений появится сообщение о сбое компонентов и предложение перезагрузить ПК.

Возможная причина: повреждены компоненты Агента.

Решение:

Проверьте актуальность репозитория на Сервере по инструкции, затем дождитесь получения Агентом ревизий. Если версии ревизий и там, и там актуальны — выполните восстановление антивируса штатными средствами ОС.

  1. Откройте Пуск → Панель управления → Программы и компоненты (аналогичный путь для вашей версии Windows) → выберите Dr.Web, нажмите сверху Изменить → Восстановить программу.
  2. После окончания восстановления перезагрузите ПК и проверьте работу обновления Dr.Web.
    Если ошибка сохраняется, проведите проверку жесткого диска на наличие ошибок с помощью утилиты chkdsk.
  3. Для проверки тома C: выполните команду:
    chkdsk C: /F /R
  4. Введите команду в окне командной строки Windows (нажмите сочетание клавиш Win+R → введите cmd → нажмите ОК) и нажмите Enter.
  5. При этом утилита предложит осуществить проверку диска «C:» при следующей загрузке. Согласитесь и перезагрузите ПК.
  6. Дождитесь окончания проверки и загрузки ОС.
  7. Перезагрузите ПК, перед запуском ОС начнется тестирование диска.

Если ошибка сохраняется, обратитесь в службу технической поддержки, приложив к запросу отчет утилиты SysInfo.

Как создать отчет

Корпоративные продукты (Dr.Web Enterprise Security Suite) — ошибки при установке Сервера
Ошибка 36

Не удалось обновить структуру базы данных до новой версии.

Решение:

Установка сервера с внутренней базой данных по умолчанию

  1. Установите Сервер Dr.Web с внутренней базой данных по умолчанию.
  2. Если установка прошла успешно, подключите вместо внутренней базы данных имеющуюся внешнюю.

Импорт базы данных внутренними средствами Сервера

  1. Сделайте экспорт базы данных при остановленном Сервере (подробнее про экспорт базы данных).
  2. Установите новый Сервер с чистой базой данных.
  3. После установки остановите работу Сервера.
  4. Импорт базы данных с обновлением структуры производится следующей командой:
    drwcsd modexecdb database-import-and-upgrade <файл экспорта базы данных>

Если установка по-прежнему завершается ошибкой, обратитесь в службу технической поддержки, приложив к запросу отчет утилиты DwSysInfo.

Как создать отчет SysInfo?

Ошибка 40

Текст ошибки: «Не удалось инициализировать или очистить базу данных»

Возможные причины: база данных уже инициализирована (существует) или же внешняя база данных отсутствует/недоступна.

Решение:

Установка сервера с внутренней базой данных по умолчанию

  1. Установите Сервер Dr.Web с внутренней базой данных по умолчанию.
  2. Если установка прошла успешно, подключите вместо внутренней базы данных имеющуюся внешнюю.

Установка сервера с чистой внешней базой данных

Создайте или очистите уже созданную базу данных средствами СУБД. Руководство по подключению, а также по подготовке и настройке базы данных можно найти в документации. В процессе установки укажите параметры подключения к базе данных. Ее инициализация произойдет в процессе установки.

Убедитесь, что используется поддерживаемая версия СУБД. Если используется ODBC-драйвер — убедитесь, что установлена его свежая версия.

Пользователь, которым планируется подключаться к СУБД, должен быть ее владельцем.

Если новая база данных создается в СУБД Microsoft SQL — необходимо указать сортировку с учетом регистра (суффикс _CS) и с учетом диакритических знаков (суффикс _AS).

Если установка по-прежнему завершается ошибкой, обратитесь в службу технической поддержки, приложив к запросу отчет утилиты DwSysInfo.

Как создать отчет

Ошибки при обновлении

Ошибка 2

Может возникать по различным причинам.

Решение:

  1. Проверьте доступность сети.
  2. Проведите проверку жесткого диска на наличие ошибок с помощью утилиты chkdsk:
    1. Вызовите командную строку. Для этого нужно нажать сочетание клавиш Win+R → ввести cmd → нажать ОК
    2. Для проверки диска C:/ выполните следующую команду:
      chkdsk C: /F /R
      Утилита предложит осуществить проверку диска C:/ при следующей загрузке компьютера. Согласитесь и перезагрузите компьютер. При загрузке начнется проверка диска. Отменять ее не нужно, необходимо дождаться окончания проверки.
  3. Выполните восстановление антивируса. Откройте Пуск → Панель управления → Программы и компоненты (аналогичный путь для вашей версии Windows) → выберите Dr.Web, нажмите сверху Изменить → Восстановить программу.
    После окончания восстановления перезагрузите компьютер и проверьте работу обновления Dr.Web.
  4. Если ошибка возникла при обновлении по зеркалу — убедитесь что папка обновлений доступна.
  5. Если ошибка обновления сохранится, нажмите на значок Dr.Web справа внизу → Центр безопасности → значок замка слева снизу→ значок шестеренки справа сверху → Общие → Дополнительные настройки → Журнал → Изменить. Установите флажок Обновление Dr.Web, нажмите ОК. Закройте настройки, повторите попытку обновления. После появления ошибки сформируйте отчет, выбрав Поддержка → Перейти к мастеру отчетов → Создать отчет.

После этого обратитесь в службу технической поддержки, приложив к запросу созданный отчет. Затем аналогичным образом отключите ведение подробного отчета для модуля обновления (уберите флажок Обновление Dr.Web).

Ошибка 4

Может возникать по различным причинам.

Решение:

  1. Откройте меню Dr.Web, выберите пункт Лицензия. Убедитесь, что используется активная лицензия. Если в списке присутствуют записи о других лицензиях, кроме активной, удалите их.
  2. В некоторых случаях придется выполнить восстановление приложения штатными средствами. Для этого:
    1. Откройте Панель управления → раздел Программы или Программы и компоненты.
    2. Выберите из списка установленных программ антивирус Dr.Web, в верхней части открытого окна нажмите кнопку Изменить. В открывшемся окне выберите вариант Восстановить программу.
  3. После завершения процедуры восстановления перезагрузите компьютер и повторно проверьте работу обновлений.
  4. Если ошибка 4 найдена в логах — причина в переданном неверном параметре для апдейтера.

Если ошибка сохраняется, обратитесь в службу технической поддержки, приложив к запросу отчет утилиты DwSysInfo.

Как создать отчет SysInfo?

Ошибка 7

Обновление уже запущено (т.е. ошибку провоцирует повторный запуск). Может возникать по различным причинам.

Решение:

  1. Подождите несколько минут — этого должно хватить для завершения обновления.
  2. Проведите проверку жесткого диска на наличие ошибок с помощью утилиты chkdsk:
    1. Вызовите командную строку. Для этого нужно нажать сочетание клавиш Win+R → ввести cmd → нажать ОК
    2. Для проверки диска C:/ выполните следующую команду:
      chkdsk C: /F /R
      Утилита предложит осуществить проверку диска C:/ при следующей загрузке компьютера. Согласитесь и перезагрузите компьютер. При загрузке начнется проверка диска. Отменять ее не нужно, необходимо дождаться окончания проверки.
  3. Выполните восстановление антивируса. Откройте Пуск → Панель управления → Программы и компоненты (путь указан для ОС Windows 7 и выше. Путь к разделу в более ранних версиях Windows выглядит иначе) → выберите Dr.Web, нажмите сверху Изменить → Восстановить программу. После окончания восстановления перезагрузите компьютер и проверьте работу обновления Dr.Web.

Если установлена свежая версия антивируса, восстановление диска и антивируса проведено, но ошибка обновления сохраняется, то нажмите на значок Dr.Web справа внизу → Центр безопасности → значок замка → значок шестеренки → Общие → Дополнительные настройки → Журнал → Изменить. Установите флажок Обновление Dr.Web, нажмите ОК. Закройте настройки, повторите попытку обновления. После появления ошибки сформируйте отчет, выбрав Поддержка → Перейти к мастеру отчетов → Создать отчет.

После этого обратитесь в службу технической поддержки, приложив к запросу созданный отчет. Затем аналогичным образом отключите ведение подробного отчета для модуля обновления (уберите флажок Обновление Dr.Web).

Ошибка 8

Нет обновлений для текущих продуктов или компонентов. Не является ошибкой.

Ошибка 9

Невозможно подключиться к серверам обновления.

Решение:

Проверьте подключение к Интернету — без него обновление всегда будет завершаться ошибкой 9.

Если подключение к Интернету работает корректно, но ошибка сохраняется — обратитесь в службу технической поддержки, приложив к запросу отчет утилиты DwSysInfo.

Как создать отчет SysInfo?

Ошибка 10

Ошибка целостности репозитория.

Решение:

Если ошибка возникает в процессе получения обновлений через зеркало обновлений, пожалуйста, изучите общие рекомендации по его настройке.

Если проблема не решена, обратитесь в службу технической поддержки, приложив к запросу отчет утилиты DwSysInfo.

Как создать отчет SysInfo?

Ошибка 11

Не получилось отключить самозащиту (если в системе уже установлен модуль Самозащиты).

Ошибка может быть вызвана рядом причин:

  1. Используется устаревшая версия антивируса. Чаще всего встречается, если по ошибке была установлена старая версия продуктов Dr.Web или была попытка выполнить обновление на системах, где оно не проводилось в течение долгого времени.
    Решение: удалите старую версию антивируса и установите актуальную, скачав ее по ссылке.
  2. Файлы обновления повреждены (из-за проблем с диском или системного сбоя при обновлении).

    Решение: проверьте и исправьте ошибки диска, проведите процедуру восстановления антивируса:

    1. Проведите проверку жесткого диска на наличие ошибок с помощью утилиты chkdsk:
      • Вызовите командную строку. Для этого нужно нажать сочетание клавиш Win+R → ввести cmd → нажать ОК
        Для проверки диска C:/ выполните следующую команду:
        chkdsk C: /F /R
        Утилита предложит осуществить проверку диска C:/ при следующей загрузке компьютера. Согласитесь и перезагрузите компьютер. При загрузке начнется проверка диска. Отменять ее не нужно, необходимо дождаться окончания проверки.
    2. Выполните восстановление антивируса. Откройте Пуск → Панель управления → Программы и компоненты (аналогичный путь для вашей версии Windows) → выберите Dr.Web, нажмите сверху Изменить → Восстановить программу.
      После окончания восстановления перезагрузите компьютер и проверьте работу обновления Dr.Web.

Если установлена свежая версия антивируса, восстановление диска и антивируса проведено, но ошибка обновления сохраняется, то нажмите на значок Dr.Web справа внизу → Центр безопасности → значок замка → значок шестеренки → Общие → Дополнительные настройки → Журнал → Изменить. Установите флажок Обновление Dr.Web, нажмите ОК. Закройте настройки, повторите попытку обновления. После появления ошибки сформируйте отчет, выбрав Поддержка → Перейти к мастеру отчетов → Создать отчет.

После этого обратитесь в службу технической поддержки, приложив к запросу созданный отчет. Затем аналогичным образом отключите ведение подробного отчета для модуля обновления (уберите флажок Обновление Dr.Web).

Ошибка 12

Лицензия заблокирована на сервере. Вероятно, в Менеджере лицензий в качестве текущей лицензии указана уже истекшая или заблокированная (по причине продления, замены, разбивки или слияния) лицензия.

Решение:

  1. Зарегистрируйте новую лицензию в Менеджере лицензий.
  2. Удалите истекшую (или заблокированную) лицензию из Менеджера лицензий. В списке лицензий должна остаться только одна действующая лицензия.
Ошибка 13

Отсутствие лицензии. В Менеджере лицензий нет ни одной действующей лицензии.

Решение:

Зарегистрируйте новую лицензию Dr.Web.

Ошибка 15

Продукт не поддерживается.

Решение:

Сроки поддержки продуктов Dr.Web обозначены на официальном сайте. Для более подробного ответа и/или для помощи с установкой поддерживаемого продукта оформите письменный запрос в службу технической поддержки.

Ошибка 16

Лицензия не найдена в базе на сервере (ключевой файл поврежден) либо попытка обновления происходит с истекшей лицензией.

Решение:

Найдите письмо с ключевым файлом, который был выслан на ваш регистрационный e-mail.

  1. Сохраните приложенный к этому письму архив с ключевым файлом на жесткий диск вашего компьютера.
  2. Разархивируйте его, щелкнув по архиву правой кнопкой мыши и выбрав пункт Извлечь всё.
  3. Укажите папку, в которую необходимо поместить ключевой файл (например, на Рабочий стол).
  4. Щелкните по значку антивируса в области уведомлений и перейдите на вкладку Лицензия. Нажмите на замок, чтобы перейти в административный режим (если у вас установлен пароль, необходимо его ввести). Нажмите Купить или активировать новую лицензию. В открывшемся окне введите серийный номер новой лицензии и нажмите Активировать либо нажмите на или укажите ключевой файл и укажите путь к сохраненному ранее ключевому файлу.

Если причина в лицензии с истекшим сроком действия — следует заменить лицензию на действующую и повторить попытку обновления.

Если ошибка сохраняется — пожалуйста, оформите письменный запрос в службу технической поддержки, приложив к запросу отчет утилиты Sysinfo.

Как создать отчет SysInfo?

Ошибка 17

Зона обновления не пригодна (разные версии).

Решение:

Обратитесь в службу технической поддержки, приложив к запросу отчет утилиты DwSysInfo.

Как создать отчет SysInfo?

Ошибка 31

Используется ключ, предназначенный для тестирования продукта (не коммерческий). При этом у пользователя установлен коммерческий продукт.

Решение:

  1. Зарегистрируйте новую лицензию в Менеджере лицензий.
  2. Удалите предыдущую (тестовую) лицензию из Менеджера лицензий. В списке лицензий должна остаться только одна действующая лицензия.

Коды и описание ошибок для продуктов Dr.Web под Linux

Коды ошибок и описание к ним можно найти в актуальной документации к Dr.Web Home Security Suite / Dr.Web Enterprise Security Suite / Dr.Web Desktop Security Suite / Dr.Web Security Space (для Linux).

Общие рекомендации по идентификации ошибок

  • Для уточнения места и причины возникновения ошибки ознакомьтесь с содержимым журнала Dr.Web для Linux (по умолчанию он находится в файле /var/log/syslog или /var/log/messages, в зависимости от используемой ОС). Также вы можете воспользоваться командой drweb-ctl log.
  • Для облегчения идентификации ошибки рекомендуется настроить вывод журнала в отдельный файл и разрешить вывод расширенной отладочной информации. Для этого выполните следующие команды:
    • # drweb-ctl cfset Root.Log <путь к файлу журнала>
    • # drweb-ctl cfset Root.DefaultLogLevel DEBUG
  • Для возврата настроек ведения журнала по умолчанию выполните следующие команды:
    • # drweb-ctl cfset Root.Log -r
    • # drweb-ctl cfset Root.DefaultLogLevel -r

Коды и описание ошибок для Dr.Web для почтовых серверов UNIX

Коды ошибок и описание к ним можно найти в актуальной документации к Dr.Web Enterprise Security Suite / Dr.Web Mail Security Suite (для UNIX).

Общие рекомендации по идентификации ошибок

  • Для уточнения места и причины возникновения ошибки ознакомьтесь с содержимым журнала Dr.Web для почтовых серверов UNIX (по умолчанию он находится в файле /var/log/syslog или /var/log/messages, в зависимости от используемой ОС). Также вы можете воспользоваться командой drweb-ctl log.
  • Для облегчения идентификации ошибки рекомендуется настроить вывод журнала в отдельный файл и разрешить вывод расширенной отладочной информации. Для этого выполните следующие команды:
    • drweb-ctl cfset Root.Log <путь к файлу журнала>
    • drweb-ctl cfset Root.DefaultLogLevel DEBUG
  • Для возврата настроек ведения журнала по умолчанию выполните следующие команды:
    • drweb-ctl cfset Root.Log -r
    • drweb-ctl cfset Root.DefaultLogLevel -r

Код ошибки 1073740940 (-1073740940, если быть точнее) может возникать в Minecraft по самым разным причинам, однако чаще всего ее вызывает следующее:

  • устаревшая версия Java;
  • недостаток выделенной оперативной памяти;
  • конфликтующие с игрой модификации.

Итак, что можно сделать, чтобы избавиться от ошибки 1073740940? Во-первых, вам нужно обновить версию Java на своем компьютере. Возможно, вы решили поиграть в Minecraft на только что установленной ОС, и еще не успели установить актуальную версию Java.

Также можно попробовать выделить чуть больше оперативной памяти для игры. Запустите лаунчер Minecraft и перейдите в раздел загрузок. У последнего релиза кликните на значок ••• и выберите «Редактировать». Опуститесь к строке аргументов JVM и вставьте в пустую строку значение -Xmx4G или -Xmx8G (зависит от объема ОЗУ в вашем ПК). Сохраните изменения и запустите игру.

Согласно сообщениям в сети, некоторые модификации также способны вызывать появление кода 1073740940 в Minecraft. К примеру, после продолжительных исследований, ребята на Reddit определили, что данную ошибку может вызывать мод Supplementaries (от MehVahdJukaar). Решение — удаление проблемного мода либо установка его другой версии.

Программа возвращает пользователю N количество нечетных квадратов, начиная с 1.

Начиная с номеров 5-10 и затем 20, (я не пошел дальше) при удалении массива A он вылетает с сообщением об ошибке: «Процесс вернул -1073740940 (0xC0000374)». Что, по-видимому, является нарушением памяти?

#include using namespace std; int main()< int ok; int counter; do < int size; while (true) < cout > size; if(size <1) < cout << «Enter a valid number» << endl; continue; >else break; > if (size%2==0) counter=size*2-1; else counter=size*2; int *A = new int[size]; for (int i=1; i delete[]A; cout > ok; >while(ok==1); >
Anatolijs Karpovs 26 Ноя 2021 в 01:02

Если ваш счетчик вдвое превышает размер массива, что вы ожидаете, что произойдет в вашем цикле for , когда вы выйдете за пределы?

UnholySheep
26 Ноя 2021 в 01:04

counter больше, чем size . Вы выделяете массив с элементами size , но получаете доступ к индексу до counter включительно; после чего ваша программа демонстрирует неопределенное поведение.

Developers: IBM launches a new certification for your quantum computing skills

Источник: question-it.com

анализ проблемы

Позже создайте объект cv :: Mat со всеми 255 и CV_8UC3 и извлеките массив данных как вычитаемое число.

cv::Mat mask = cv::Mat(rows, cols, CV_8UC3, cv::Scalar::all(255)); // Постоянный расчет вызовет ошибки расчета, например 255-1 = 253 // Необходимо использовать массив для передачи параметров const uchar* maskData = mask.data;

Результат операции правильный:

Но есть новые проблемы

2. exited with code -1073740940 (0xc0000374)

Найдите соответствующую информацию

«VS сообщил об ошибке, что wntdll.pdb не был загружен, ntdll.dll0xC0000374: куча повреждена» (https://blog.csdn.net/luoye2333/article/details/89087530)

После отладки было обнаружено, что ошибка памяти возникла после вызова метода CUDA, который вызывал ошибку, когда объект был уничтожен в конце программы.

Проверить функцию вызова CUDA

cudaError_t supplementPix(uchar *c, const uchar *a, const uchar *b, unsigned int size)

Обнаружено, что при изменении кода шаблона int было изменено на uchar, а sizeof (int) было изменено.

решение

После модификации результат операции (успех)

Do you know that there are 36 main energy points on planet Earth?Watch full DISCLOSURE on UNIFYD TV

Резюме

Когда возвращаемое значение программы выходит с кодом -1073740940 и ошибка отладки указывает 0xc0000374, что куча ntdll.dll повреждена, это означает, что это утечка памяти.

Особенно это приводит к ошибкам, когда объект уничтожается (т.е. release ()) в конце программы.

Источник: russianblogs.com

Mining program unexpected exit. Code: -1073740940 MBminer

Доброго времени суток, друзья. Довольно долгое время на ферме простоял NBMiner 36.1. Всё устраивало, практически. За исключением, что ребутился (именно майнер, не риг) раз в неделю-две, ну и бог с ним. А всю последнюю неделю не держит аптайм больше 8 часов и всё.

Крашится с текстом в названии темы. Я попробовал версию обновить, дрова свежие, винду в конце концов, но нет. Он опять перегружается более двух раз в сутки. Есть только скриншот и полнейшее отсутствие понимания, даже с какой стороны начать подходить к решению.

Это точно не переразгон, потому что от него майнер по-другому перегружается, там ошибка другая, да и разгон у меня прям ну копеечный. На блоках 50% запаса. Никаких переходников между райзерами и блоками, все райзера новые. Короче тупик. Чё скажете?

Вложения

123,5 КБ · Просмотры: 40

Источник: miningclub.info

Ошибка обновления: -1073740940 (Windows 10 1903)

- - - - -

Закрыто

  • Тема закрыта

14 ответов в этой теме

#1 Kord

  • Posters
  • 30 Сообщений:
  • Отправлено 06 Ноябрь 2021 — 15:34

    Здравструйте. Есть ПК с Windows 10 v1903 и DrWeb Security Space 12, у которого нет (и не будет) подключения к интернету. Обновления для Доктора скачиваются с других ПК с помощью файлов drwupsrv.exe и drwebzones.xml по команде:
    drwupsrv.exe -c download -r «папка» -s90 —zones=drwzones.xml —key-file «файл ключа»

    Файлы drwupsrv.exe и drwebzones.xml используются всегда самые свежие.
    На протяжении нескольких лет данная схема всегда работала без сбоев, обновлялся с частотой раз в месяц, 2 дня назад сделал крайнее обновление — все хорошо. Сегодня понадобилось с помощью Акрониса восстановить раздел с Windows из образа, сделанного аж в 2019 году. Теперь Доктор образца 2019 года при обновлении выдаёт код ошибки: -1073740940. Если в настройках включить только обновление вирусных баз, то обновление проходит успешно.

    :)

    Я почти на 100% уверен, что проблему можно решить путем переустановки Доктора из свежего дистрибутива, но хотелось бы понять в чем причина возникновения этой ошибки и как можно обновить старые модули Доктора без переустановки

    PS: логи с этой машины скинуть весьма проблематично, но если это необходимо — напишите, сделаю

    Сообщение было изменено Kord: 06 Ноябрь 2021 — 15:35

    #2 Dmitry_rus

    Dmitry_rus

  • Helpers
  • 3 275 Сообщений:
  • Отправлено 06 Ноябрь 2021 — 17:12

    Так, в качестве предположений (без логов гадать бессмысленно):

    1. Прочекайте файловую систему на предмет ошибок.

    2. Не исключено, что структура репозитория со времен 2019 г. несколько изменилась, и апдейтер не совсем корректно с ней работает.

    #3 Kord

  • Posters
  • 30 Сообщений:
  • Отправлено 06 Ноябрь 2021 — 17:24

    Нашёл у себя в закромах базы от 26.02.2021, попробовал с них обновиться и обновление прошло успешно! Перезагружаю ПК, как того попросил Доктор, пробую обновиться со свежих баз: обновление выполнено успешно!

    Для чистоты эксперимента попробовал ещё раз восстановить образ системы 2019 года: все тоже самое — обновление базами 04.11.2021 выдаёт ошибку, обновление базами 26.02.2021 проходит успешно.

    :)

    Попробовал восстановить образ системы с Windows 7 SP1 (без обновлений) тоже 2019 года, устанавливаю обновление Windows для поддержки SHA256 и Доктор обновляется свежими базами без ошибок

    #4 Kord

  • Posters
  • 30 Сообщений:
  • Отправлено 06 Ноябрь 2021 — 17:34

    Так, в качестве предположений (без логов гадать бессмысленно):
    1. Прочекайте файловую систему на предмет ошибок.
    2. Не исключено, что структура репозитория со времен 2019 г. несколько изменилась, и апдейтер не совсем корректно с ней работает.

    1. Проверил: с файловой системой и самим HDD все в порядке 100%, Акронис использую один и то же уже лет 8, конкретно эта версия не подводила ни разу, да и образ раздела посекторный.
    2. Вполне возможно что так, но на Windows 7 Доктор обновляется с новых баз без проблем

    Какие именно логи нужны? dwupdater.log или ещё что-то?

    #5 VVS

  • Moderators
  • 18 938 Сообщений:
  • Отправлено 06 Ноябрь 2021 — 17:40

    Какие именно логи нужны? dwupdater.log или ещё что-то?

    Для начала именно его.

    #6 Kord

  • Posters
  • 30 Сообщений:
  • Отправлено 06 Ноябрь 2021 — 19:09

    Какие именно логи нужны? dwupdater.log или ещё что-то?

    Для начала именно его.

    1:53 — попытка обновления базами от 04.11.2021 (ошибка)

    1:55 — обновление базами от 26.02.2021 (успешно)

    1:58 — обновление базами от 04.11.2021 (успешно)

    Прикрепленные файлы:

    #7 Dmitry_rus

    Dmitry_rus

  • Helpers
  • 3 275 Сообщений:
  • Отправлено 06 Ноябрь 2021 — 19:51

    При обновлении в 1:53:07 старый апдейтер падает на полпути, затем перезапускается и начинает 2-ю фазу (постапдейт), не завершив собственно апдейт. Возможно, дебажные логи апдейтера смогут как-то пролить свет.

    20211107 01:53:07 [INF] [ Loader ] Download file versions.xml from C:DrWeb-UpdatesUpdatesversions.xml to C:ProgramDataDoctor WebUpdaterrepoversions.xml.newer 20211107 01:53:07 [INF] [ Loader ] Timestamp zone is 20211103183753 20211107 01:53:07 [INF] [ Loader ] Zone C:DrWeb-UpdatesUpdates has valid timestamp for update 20211107 01:53:07 [INF] [ Loader ] Download file certificate.xml from C:DrWeb-UpdatesUpdatescertificate.xml to C:ProgramDataDoctor WebUpdaterrepocertificate.xml.newer 20211107 01:53:07 [INF] [ Loader ] Download file 90products.xml from C:DrWeb-UpdatesUpdates90products.xml to C:ProgramDataDoctor WebUpdaterrepo90products.xml.newer Updater version: 12.0.12.08020, x64, Time : 07 November 2021 01:53:07 Computer name : PC, User name : WORKGROUPPC$ Platform : Microsoft Windows 10 Professional 18362, x64, Locale : 1049 Command line : -c postupdate —progress-to-console —verbosity=info —dws9 —interactive —host-guid=a5564af6-5497-4ec3-9d2e-a8439d75ddc2 —coutname=7C49CEAF1D257329 Copyright (c) Doctor Web, Ltd., 1992-2019 ============================================================================= 20211107 01:53:07 [INF] [ Main ] Logfile: C:ProgramDataDoctor WebLogsdwupdater.log 20211107 01:53:07 [INF] [ Main ] Updater Run as interactive application [ PID: 5724 ]

    #8 Kord

  • Posters
  • 30 Сообщений:
  • Отправлено 06 Ноябрь 2021 — 20:07

    При обновлении в 1:53:07 старый апдейтер падает на полпути, затем перезапускается и начинает 2-ю фазу (постапдейт), не завершив собственно апдейт. Возможно, дебажные логи апдейтера смогут как-то пролить свет.

    :)

    Dmitry_rus, спасибо, что посмотрели.
    В принципе для себя я нашёл выход из ситуации (сначала обновиться февральскими базами, затем — актуальными). Думаю, разработчикам будет не особо интересно тратить время на выяснение причин падения Updater’a двухлетней свежести на устаревшей ОС. Но если что, могу собрать дебажные логи

    #9 Afalin

  • Dr.Web Staff
  • 5 466 Сообщений:
  • Отправлено 07 Ноябрь 2021 — 12:44

    Если там падение с heap corruption на этом products.xml, то совсем не интересно.

    Семь раз отрежь – один раз проверь

    #10 SergSG

  • Posters
  • 14 381 Сообщений:
  • Отправлено 10 Ноябрь 2021 — 15:59

    Структура зона-репы менялась и старый апдейтер об этом не в курсе.

    #11 Kord

  • Posters
  • 30 Сообщений:
  • Отправлено 10 Ноябрь 2021 — 21:52

    STATUS_FAILED_STACK_SWITCH
    Структура зона-репы менялась и старый апдейтер об этом не в курсе.

    Тогда, по идее, апдейтер должен падать на любой ОС, но на Windows 7 проблем нет.

    #12 SergSG

  • Posters
  • 14 381 Сообщений:
  • Отправлено 10 Ноябрь 2021 — 22:54

    STATUS_FAILED_STACK_SWITCH
    Структура зона-репы менялась и старый апдейтер об этом не в курсе.

    Тогда, по идее, апдейтер должен падать на любой ОС, но на Windows 7 проблем нет.

    Это код системной ошибки — винда подавилась апдейтером. И падать, по идее, может на любой ОС, но могут быть и свои нюансы.

    #13 Afalin

  • Dr.Web Staff
  • 5 466 Сообщений:
  • Отправлено 11 Ноябрь 2021 — 09:49

    В зависимости от положения звёзд оно может и не упасть.

    Семь раз отрежь – один раз проверь

    #14 shonyv

  • Posters
  • 81 Сообщений:
  • Отправлено 17 Ноябрь 2021 — 09:12

    Сегодня не хочет доктор обновляться, все по инструкции сделал и ноль результата! А вот в панели управления не восстанавливается пишет ошибка 46

    В камень стрелять, стрелы терять!

    #15 VVS

  • Moderators
  • 18 938 Сообщений:
  • Отправлено 17 Ноябрь 2021 — 09:24

    Сегодня не хочет доктор обновляться, все по инструкции сделал и ноль результата! А вот в панели управления не восстанавливается пишет ошибка 46

    Создайте новую тему, в которую сразу же приложите отчёт доктора.
    Тема закрыта.
    Модератор.

    Источник: forum.drweb.com

    Nikis0715

    0 / 0 / 0

    Регистрация: 06.10.2020

    Сообщений: 26

    1

    30.01.2021, 17:55. Показов 8258. Ответов 17

    Метки с++ (Все метки)


    Студворк — интернет-сервис помощи студентам

    Здравствуйте, пишу калькулятор двоичных чисел. Почему-то часто вылезает ошибка -1073740940 и программа не считает. В чем может быть дело?

    C++
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
    402
    403
    404
    405
    406
    407
    408
    409
    410
    411
    412
    413
    414
    415
    416
    417
    418
    419
    420
    421
    422
    423
    424
    425
    426
    427
    428
    429
    430
    431
    432
    433
    434
    435
    436
    437
    438
    439
    440
    441
    442
    443
    444
    445
    446
    447
    448
    449
    450
    451
    452
    453
    454
    455
    456
    457
    458
    459
    460
    461
    462
    463
    464
    465
    466
    467
    468
    469
    470
    471
    472
    473
    474
    475
    476
    477
    478
    479
    480
    481
    482
    483
    484
    485
    486
    487
    488
    489
    490
    491
    492
    493
    494
    495
    496
    497
    498
    499
    500
    501
    502
    503
    504
    505
    506
    507
    508
    509
    510
    511
    512
    513
    514
    515
    516
    517
    518
    519
    520
    
    #include <iostream>
    #include <string>
     
    using namespace std;
     
    class Binary {
    public:
        int mem;
        int* bin;
        int dec;
     
        Binary();
        Binary(int dec);
        Binary(int dec, int mem);
        Binary(int* bin, int mem);
        Binary(const Binary& num2);
        ~Binary() {
            delete[]bin;
            bin = nullptr;
        }
        friend Binary operator+(Binary num1, Binary num2);
        friend Binary operator-(Binary num1, Binary num2);
        friend Binary operator*(Binary num1, Binary num2);
        friend void dectobin(int dec, int* bin, int mem);
        friend int bintodec(int* bin, int mem);
        int getmem();
        int getdec();
        int* getbin();
        void printbin();
        void printdec();
    };
     
    void dectobin(int dec, int* bin, int mem) {
        int dec1 = dec;
        for (int i = 0; i < mem; i++) {
     
            bin[i] = dec1 % 2;
            dec1 = (dec1 - bin[i]) / 2;
        }
    }
     
    int bintodec(int* bin, int mem) {
        int dec = 0;
        for (int i = 0; i < mem; i++) {
            dec = dec + bin[i] * (int) pow(2, i);
        }
        return dec;
    }
     
    Binary::Binary() {
        mem = 8;
        dec = 0;
        bin = new int[mem];
        dectobin(dec, bin, mem);
    }
     
    Binary::Binary(int d) {
        dec = d;
        mem = 8;
        if (d >= 0 && d < pow(2, 8)) mem = 8;
        if (d >= pow(2, 8) + 1 && d < pow(2, 16)) mem = 16;
        if (d >= pow(2, 16) + 1 && d < pow(2, 32)) mem = 32;
        bin = new int[mem];
        dectobin(dec, bin, mem);
    }
     
    Binary::Binary(int d, int m) {
        dec = d;
        mem = m;
        bin = new int[mem];
        dectobin(dec, bin, mem);
    }
     
    Binary::Binary(int* b, int m) {
        mem = m;
        bin = new int[mem];
        for (int i = 0; i < mem; i++) {
            bin[i] = b[i];
        }
        dec = bintodec(bin, mem);
    }
     
    Binary::Binary(const Binary& num2) {
        mem = num2.mem;
        dec = num2.dec;
        bin = new int[mem];
        for (int i = 0; i < mem; i++) {
            bin[i] = num2.bin[i];
        }
    }
     
    int Binary::getmem() {
        return this->mem;
    }
     
    int* Binary::getbin() {
        int* bin1 = new int[mem];
        for (int i = 0; i < mem; i++) {
            bin1[i] = bin[i];
        }
        return bin1;
    }
     
    int Binary::getdec() {
        return this->dec;
    }
     
    void Binary::printbin() {
        for (int i = mem - 1; i >= 0; i--) {
            cout << bin[i];
        }
    }
     
    void Binary::printdec() {
        cout << dec;
    }
     
    Binary operator+(Binary num1, Binary num2) {
        int* bin1 = num1.getbin();
        int* bin2 = num2.getbin();
        int mem3 = 8;
        if (num1.getmem() > num2.getmem()) {
            mem3 = num1.getmem();
            int* bin3 = new int[mem3];
            for (int i = 0; i < mem3; i++) {
                bin3[i] = 0;
            }
            for (int i = 0; i < mem3 - 8; i++) {
                bin3[i] += bin1[i] + bin2[i];
                if (bin3[i] > 1) {
                    bin3[i] -= 2;
                    bin3[i + 1] += 1;
                }
            }
            for (int i = mem3 - 8; i < mem3; i++) {
                bin3[i] += bin1[i];
                if (i == mem3 - 1 && bin3[i] == 2) {
                    cout << endl << "Ошибка. Недостаточно выделенной памяти в размере " << mem3 << " бит" << endl;
                    return Binary(0);
                }
                if (bin3[i] > 1) {
                    bin3[i] -= 2;
                    bin3[i + 1] += 1;
                }
            }
            return Binary(bin3, mem3);
        }
     
        if (num1.getmem() == num2.getmem()) {
            mem3 = num1.getmem();
            int* bin3 = new int[mem3];
            for (int i = 0; i < mem3; i++) {
                bin3[i] = 0;
            }
            for (int i = 0; i < mem3; i++) {
                bin3[i] += bin1[i] + bin2[i];
                if (i == mem3 - 1 && bin1[i] + bin2[i] > 1) {
                    cout << endl << "Ошибка. Недостаточно выделенной памяти в размере " << mem3 << " бит" << endl;
                    return Binary(0);
                }
                if (bin3[i] > 1) {
                    bin3[i] -= 2;
                    if (i < mem3 - 1) bin3[i + 1] += 1;
                }
     
            }
            return Binary(bin3, mem3);
        }
     
        if (num1.getmem() < num2.getmem()) {
            mem3 = num2.getmem();
            int* bin3 = new int[mem3];
            for (int i = 0; i < mem3; i++) {
                bin3[i] = 0;
            }
            for (int i = 0; i < mem3 - 8; i++) {
                bin3[i] += bin1[i] + bin2[i];
                if (bin3[i] > 1) {
                    bin3[i] -= 2;
                    bin3[i + 1] += 1;
                }
            }
            for (int i = mem3 - 8; i < mem3; i++) {
                if (i == mem3 - 1 && bin3[i] == 2) {
                    cout << endl << "Ошибка. Недостаточно выделенной памяти в размере " << mem3 << " бит" << endl;
                    return Binary(0);
                }
                if (bin3[i] > 1) {
                    bin3[i] -= 2;
                    bin3[i + 1] += 1;
                }
     
            }
            return Binary(bin3, mem3);
        }
        return Binary(0);
    }
     
    Binary operator-(Binary num1, Binary num2) {
        int* bin1 = num1.getbin();
        int* bin2 = num2.getbin();
     
        int mem3 = 8;
        if (num1.getmem() > num2.getmem()) {
            mem3 = num1.getmem();
            int* bin3 = new int[mem3];
            for (int i = 0; i < mem3 - 8; i++) {
                if (bin1[i] < bin2[i]) {
                    bin1[i + 1] -= 1;
                    bin1[i] += 2;
                    bin3[i] = bin1[i] - bin2[i];
                }
                else bin3[i] = bin1[i] - bin2[i];
            }
            for (int i = mem3 - 8; i < mem3; i++) {
                bin3[i] = bin1[i];
            }
     
            return Binary(bin3, mem3);
        }
     
        if (num1.getmem() < num2.getmem()) {
            mem3 = num1.getmem();
            int* bin3 = new int[mem3];
            for (int i = 0; i < mem3 - 8; i++) {
                if (bin2[i] < bin1[i]) {
                    bin2[i + 1] -= 1;
                    bin2[i] += 2;
                    bin3[i] = bin2[i] - bin1[i];
                }
                else bin3[i] = bin2[i] - bin1[i];
            }
            for (int i = mem3 - 8; i < mem3; i++) {
                bin3[i] = bin2[i];
            }
     
            return Binary(bin3, mem3);
        }
     
        if (num1.getmem() == num2.getmem()) {
            mem3 = num1.getmem();
            int* bin3 = new int[mem3];
            for (int i = 0; i < mem3; i++) {
                if (num1.getdec() > num2.getdec()) {
                    if (bin1[i] < bin2[i]) {
                        bin1[i + 1] -= 1;
                        bin1[i] += 2;
                        bin3[i] = bin1[i] - bin2[i];
                    }
                    else bin3[i] = bin1[i] - bin2[i];
                }
                if (num1.getdec() <= num2.getdec()) {
                    if (bin2[i] < bin1[i]) {
                        bin2[i + 1] -= 1;
                        bin2[i] += 2;
                        bin3[i] = bin2[i] - bin1[i];
                    }
                    else bin3[i] = bin2[i] - bin1[i];
                }
            }
     
            return Binary(bin3, mem3);
        }
        return Binary(0);
    }
     
    Binary operator*(Binary num1, Binary num2) {
        int* bin1 = num1.getbin();
        int* bin2 = num2.getbin();
        int mem3 = 8;
        int mem1 = num1.getmem();
        int mem2 = num2.getmem();
        int d1 = num1.getdec();
        int d2 = num2.getdec();
        int d = d1 * d2;
        if (d >= 0 && d < pow(2, 8)) mem3 = 8;
        if (d >= pow(2, 8) + 1 && d < pow(2, 16)) mem3 = 16;
        if (d >= pow(2, 16) + 1 && d < pow(2, 32)) mem3 = 32;
        if (d > pow(2, 32)) {
            cout << "Максимального размера выделяемой памяти недостаточно для получения ответа. Операция прервана";
            return Binary(0);
        }
        int* bin3 = new int[mem3];
        for (int i = 0; i < mem3; i++) {
            bin3[i] = 0;
        }
     
        for (int i = 0; i < mem1; i++) {
            for (int j = 0; j < mem2; j++) {
                bin3[i + j] += bin1[i] * bin2[j];
                if (bin3[i + j] > 1) {
                    bin3[i + j] -= 2;
                    bin3[i + j + 1] += 1;
                }
            }
        }
     
        return Binary(bin3, mem3);
    }
     
    int main() {
        setlocale(LC_ALL, "Rus");
        int otv(1);
        //while (otv == 1) {
            int d1(0), d2(0), count(0);
            char zn1('+'), zn2('+'), zn3('+'); //переменные для хранения знаков. Знак 2 определяем действие между числами. Знаки 1 и 3 - знаки чисел
            string v;//строка, для считывания выражения
            string D1, D2; //строки, в которые запишем числа
            cout << "Введите выражение" << endl;
            getline(cin, v); //считываем введенное выражение в строку
            int length = v.length(); // определяем длину строки
            /////////////////////////////////////////////
            //1 ЭТАП: ОПРЕДЕЛЕНИЕ ЗНАКОВ В ВЫРАЖЕНИИ//
            count = 0; //зануляем счетчик кол-ва знаков в строке
            for (int i = 0; i < length; i++) {
                if (v[i] == '-' || v[i] == '+' || v[i] == '*') count++; //узнаем кол-во знаков в строке
            }
     
            int* pointer = new int[3];//в этот массив сохраним номера позиций знаков, чтобы разграничить и считать числа
            for (int i = 0; i < 3; i++) {
                pointer[i] = 0;
            }
            if (count == 1) { // если в строке только 1 знак
                zn1 = '+';
                zn3 = '+'; // то 1 и 3 знак - это +
                for (int i = 0; i < length; i++) {
                    if (v[i] == '-' || v[i] == '+' || v[i] == '*') {
                        zn2 = v[i]; //определяем знак 2
                        pointer[0] = i;
                    }
                }
                D1.assign(v, 0, pointer[0]);//сохраняем первое число в строку
                d1 = atoi(D1.c_str());//переводим строку в число
                D2.assign(v, pointer[0] + 1, length - pointer[0]);//по аналогии
                d2 = atoi(D2.c_str());
            }
     
     
            if (count == 2) { //если в строке  2 знака, то
                if (v[0] == '-') {// если первый знак -, то далее ищем второй знак
                    zn1 = '-';
                    for (int i = 0; i < length; i++) {
                        if (v[i] == '-' || v[i] == '+' || v[i] == '*') {
                            zn2 = v[i];
                            pointer[0] = i;
                        }
                    }
                    zn3 = '+';
                    D1.assign(v, 1, pointer[0] - 1);//сохраняем первое число в строку
                    d1 = atoi(D1.c_str());//переводим строку в число
                    D2.assign(v, pointer[0] + 1, length - pointer[0]);//по аналогии
                    d2 = atoi(D2.c_str());
                }
                else { //иначе 
                    count = 0; //зануляем счетчик кол-ва знаков
                    for (int i = 0; i < length; i++) {
                        if (v[i] == '-' || v[i] == '+' || v[i] == '*') {
                            if (count == 1) {
                                zn3 = v[i];
                                count++;
                                pointer[1] = i;
                            }
                            if (count == 0) {
                                zn2 = v[i];
                                count++;
                                pointer[0] = i;
                            }
                        }
                    }
                    D1.assign(v, 0, pointer[0]);//сохраняем первое число в строку
                    d1 = atoi(D1.c_str());//переводим строку в число
                    D2.assign(v, pointer[1] + 1, length - pointer[1]);//по аналогии
                    d2 = atoi(D2.c_str());
                }
            }
     
     
            if (count == 3) {//если в строке 3 знака, то сохраняем знаки поочередно 
                for (int i = 0; i < length; i++) {
                    if (v[i] == '-' || v[i] == '+' || v[i] == '*') {
                        if (count == 2) {
                            zn3 = v[i];
                            count++;
                            pointer[2] = i;
                        }
                        if (count == 1) {
                            zn2 = v[i];
                            count++;
                            pointer[1] = i;
                        }
                        if (count == 0) {
                            zn1 = v[i];
                            count++;
                            pointer[0] = i;
                        }
                    }
                }
                D1.assign(v, pointer[0] + 1, pointer[1] - pointer[0] - 1);//сохраняем первое число в строку
                d1 = atoi(D1.c_str());//переводим строку в число
                D2.assign(v, pointer[2] + 1, length - pointer[2]);//по аналогии
                d2 = atoi(D2.c_str());
            }
            /////////////////////
            //2 ЭТАП. ВЫЧИСЛЕНИЕ ВЫРАЖЕНИЯ//
            if (count == 1) {
                Binary bin1(d1), bin2(d2);
                Binary bin3(bin1 + bin2), bin4(bin1 - bin2), bin5(bin1 * bin2), bin6(bin2 - bin1);
                switch (zn2)
                {
                case '+':
                    bin1.printbin(); cout << " + "; bin2.printbin(); cout << " = "; bin3.printbin(); cout << endl;
                    bin1.printdec(); cout << " + "; bin2.printdec(); cout << " = "; bin3.printdec(); cout << endl;
                    break;
                case '-':
                    if (bin1.getdec() < bin2.getdec()) {
                        bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = -"; bin6.printbin(); cout << endl;
                        bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = -"; bin6.printdec(); cout << endl;
                        break;
                    }
                    bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = "; bin4.printbin(); cout << endl;
                    bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = "; bin4.printdec(); cout << endl;
                    break;
                case '*':
                    bin1.printbin(); cout << " * "; bin2.printbin(); cout << " = "; bin5.printbin(); cout << endl;
                    bin1.printdec(); cout << " * "; bin2.printdec(); cout << " = "; bin5.printdec(); cout << endl;
                    break;
                default: cout << "Введен неверный знак. Попробуйте еще раз" << endl;
                    break;
                }
            }
            else {
                Binary bin1(d1), bin2(d2);
                Binary bin3(bin1 + bin2), bin4(bin1 - bin2), bin5(bin1 * bin2), bin6(bin2 - bin1);
                switch (zn2)
                {
                case '+':
                    if (zn1 == '+' && zn3 == '+') {
                        bin1.printbin(); cout << " + "; bin2.printbin(); cout << " = "; bin3.printbin(); cout << endl;
                        bin1.printdec(); cout << " + "; bin2.printdec(); cout << " = "; bin3.printdec(); cout << endl;
                        break;
                    }
                    if (zn1 == '-' && zn3 == '+') {
                        if (bin1.getdec() <= bin2.getdec()) {
                            cout << "-"; bin1.printbin(); cout << " + "; bin2.printbin(); cout << " = "; bin6.printbin(); cout << endl;
                            cout << "-"; bin1.printdec(); cout << " + "; bin2.printdec(); cout << " = "; bin6.printdec(); cout << endl;
                            break;
                        }
                        else {
                            bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = -"; bin4.printbin(); cout << endl;
                            bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = -"; bin4.printdec(); cout << endl;
                            break;
                        }
                    }
                    if (zn1 == '+' && zn3 == '-') {
                        if (bin1.getdec() < bin2.getdec()) {
                            bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = -"; bin6.printbin(); cout << endl;
                            bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = -"; bin6.printdec(); cout << endl;
                            break;
                        }
                        else {
                            bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = -"; bin4.printbin(); cout << endl;
                            bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = -"; bin4.printdec(); cout << endl;
                            break;
                        }
                    }
                case '-':
                    if (zn1 == '+' && zn3 == '+') {
                        if (bin1.getdec() < bin2.getdec()) {
                            bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = -"; bin6.printbin(); cout << endl;
                            bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = -"; bin6.printdec(); cout << endl;
                            break;
                        }
                        else {
                            bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = -"; bin4.printbin(); cout << endl;
                            bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = -"; bin4.printdec(); cout << endl;
                            break;
                        }
                    }
                    if (zn1 == '-' && zn3 == '+') {
                            cout << "-"; bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = -"; bin3.printbin(); cout << endl;
                            cout << "-"; bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = -"; bin3.printdec(); cout << endl;
                            break;
                    }
                    if (zn1 == '+' && zn3 == '-') {
                            bin1.printbin(); cout << " + "; bin2.printbin(); cout << " = "; bin3.printbin(); cout << endl;
                            bin1.printdec(); cout << " + "; bin2.printdec(); cout << " = "; bin3.printdec(); cout << endl;
                            break;
                    }
                case '*':
                    if (zn1 == '+' && zn3 == '+') {
                        bin1.printbin(); cout << " * "; bin2.printbin(); cout << " = "; bin5.printbin(); cout << endl;
                        bin1.printdec(); cout << " * "; bin2.printdec(); cout << " = "; bin5.printdec(); cout << endl;
                        break;
                    }
                    if (zn1 == '-' && zn3 == '+') {
                        cout << "-"; bin1.printbin(); cout << " * "; bin2.printbin(); cout << " = -"; bin5.printbin(); cout << endl;
                        cout << "-"; bin1.printdec(); cout << " * "; bin2.printdec(); cout << " = -"; bin5.printdec(); cout << endl;
                        break;
                    }
                    if (zn1 == '+' && zn3 == '-') {
                        bin1.printbin(); cout << " * (-"; bin2.printbin(); cout << ") = -"; bin5.printbin(); cout << endl;
                        bin1.printdec(); cout << " * (-"; bin2.printdec(); cout << ") = -"; bin5.printdec(); cout << endl;
                        break;
                    }
                    if (zn1 == '-' && zn3 == '-') {
                        bin1.printbin(); cout << " * "; bin2.printbin(); cout << " = "; bin5.printbin(); cout << endl;
                        bin1.printdec(); cout << " * "; bin2.printdec(); cout << " = "; bin5.printdec(); cout << endl;
                        break;
                    }
                default: cout << "Введен неверный знак. Попробуйте еще раз" << endl;
                    break;
                }
            }
            /*cout << "Если хотите продолжить, введите 1" << endl;
            cin >> otv;
            cout << endl;*/
            
        //}
        return 0;
    }

    0

    1272 / 1029 / 470

    Регистрация: 25.12.2016

    Сообщений: 3,333

    30.01.2021, 19:10

    2

    В отладчике программу запускали?

    Добавлено через 6 секунд
    На каких входных данных возникает ошибка?

    0

    0 / 0 / 0

    Регистрация: 06.10.2020

    Сообщений: 26

    30.01.2021, 19:21

     [ТС]

    3

    На сложениях чисел с одинаковым и разным количеством выделяемой памяти.

    Отладчик выдает: wntdll.pdb содержит отладочную информацию, необходимую для поиска исходного кода для модуля ntdll.dll

    0

    1272 / 1029 / 470

    Регистрация: 25.12.2016

    Сообщений: 3,333

    30.01.2021, 19:27

    4

    Цитата
    Сообщение от Nikis0715
    Посмотреть сообщение

    На сложениях чисел с одинаковым и разным количеством выделяемой памяти.

    Приведите конкретные числа.

    0

    0 / 0 / 0

    Регистрация: 06.10.2020

    Сообщений: 26

    30.01.2021, 21:11

     [ТС]

    5

    260 и 2

    0

    1272 / 1029 / 470

    Регистрация: 25.12.2016

    Сообщений: 3,333

    30.01.2021, 21:37

    6

    Цитата
    Сообщение от Nikis0715
    Посмотреть сообщение

    260 и 2

    У меня работает без ошибок (ввожу 260 + 2).

    Цитата
    Сообщение от Nikis0715
    Посмотреть сообщение

    Отладчик выдает: wntdll.pdb содержит отладочную информацию, необходимую для поиска исходного кода для модуля ntdll.dll

    Ну выдаёт и выдаёт — пусть так.
    Вопрос в том работает отладка или нет? Программу можно выполнить «по шагам»?

    0

    0 / 0 / 0

    Регистрация: 06.10.2020

    Сообщений: 26

    30.01.2021, 21:41

     [ТС]

    7

    Я только скопировал код и создал новый проект и все заработало. Не знаю, в чем была проблема. Новый проект все решил

    0

    1272 / 1029 / 470

    Регистрация: 25.12.2016

    Сообщений: 3,333

    30.01.2021, 21:43

    8

    Цитата
    Сообщение от Nikis0715
    Посмотреть сообщение

    Новый проект все решил

    Так бывает.

    1

    TheCalligrapher

    Вездепух

    Эксперт CЭксперт С++

    10836 / 5854 / 1588

    Регистрация: 18.10.2014

    Сообщений: 14,519

    30.01.2021, 22:03

    9

    Цитата
    Сообщение от Nikis0715
    Посмотреть сообщение

    Почему-то часто вылезает ошибка

    Ну так а чем вас не устроила первая очевидная причина: Распространенные ошибки

    Цитата
    Сообщение от Nikis0715
    Посмотреть сообщение

    260 и 2

    Что такое «260 и 2»? Ваша программа поддерживает операцию «и»?

    Цитата
    Сообщение от Nikis0715
    Посмотреть сообщение

    Новый проект все решил

    Нет, не нужно выдумывать. Ничего он не решил. Программа действительно падает.

    В operator * написана какая-то чушь при вычислении размера памяти mem3. В результате происходит вылет за пределы выделенной памяти и разрушение кучи. Отсюда и падение.

    Точнее сказать, памяти этой хватило бы, если бы цикл бинарного умножения был написан грамотно. Но цикл бинарного умножения ведет себя «нагло»

    C++
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
        for (int i = 0; i < mem1; i++) {
            for (int j = 0; j < mem2; j++) {
                bin3[i + j] += bin1[i] * bin2[j];
                if (bin3[i + j] > 1) {
                    bin3[i + j] -= 2;
                    bin3[i + j + 1] += 1;
                }
            }
        }

    Вот этот цикл разрушает память.

    Отдельно хотелось бы обратить внимание на такое

    C++
    1
    2
    3
    4
    
        if (d > pow(2, 32)) {
            cout << "Максимального размера выделяемой памяти недостаточно для получения ответа. Операция прервана";
            return Binary(0);
        }

    при int d. Это какого же размера у вас int, если он может быть больше чем 2 в 32 степени? Что за платформа?

    И почему вообще у вас в программе используется функция pow? Откуда возникла такая идея?

    Цитата
    Сообщение от Nikis0715
    Посмотреть сообщение

    пишу калькулятор двоичных чисел.

    Непонятно, почему ваш «калькулятор двоичных чисел» параллельно делает вычисления во внутреннем формате и в вашем двоичном формате. Зачем вы писали двоичное умножение, если вы все равно в реализации operator * делаете обычное умножение int d = d1 * d2;? Какой смысл «писать калькулятор двоичных чисел», если вы все равно повторяете вычисления обычным образом???

    1

    Nikis0715

    0 / 0 / 0

    Регистрация: 06.10.2020

    Сообщений: 26

    30.01.2021, 22:15

     [ТС]

    10

    В фото требования к программе.

    С умножением проблем нет. Проблемы с вычитанием и сложением 300 и 100, например. То есть, для одного выделяется массив с 16 элементами, а для другого — с 8.

    Я убрал конструктор по умолчанию, и программа перестала падать.

    C++ (Qt)
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
    402
    403
    404
    405
    406
    407
    408
    409
    410
    411
    412
    413
    414
    415
    416
    417
    418
    419
    420
    421
    422
    423
    424
    425
    426
    427
    428
    429
    430
    431
    432
    433
    434
    435
    436
    437
    438
    439
    440
    441
    442
    443
    444
    445
    446
    447
    448
    449
    450
    451
    452
    453
    454
    455
    456
    457
    458
    459
    460
    461
    462
    463
    464
    465
    466
    467
    468
    469
    470
    471
    472
    473
    474
    475
    476
    477
    478
    479
    480
    481
    482
    483
    484
    485
    486
    487
    488
    489
    490
    491
    492
    493
    494
    495
    496
    497
    498
    499
    500
    501
    502
    503
    504
    505
    506
    507
    508
    509
    510
    511
    512
    513
    514
    515
    516
    517
    518
    519
    520
    521
    522
    523
    524
    525
    526
    527
    528
    529
    530
    531
    532
    533
    534
    535
    536
    
    #include <iostream>
    #include <string>
     
    using namespace std;
     
    class Binary {
    public:
        int mem;
        int* bin;
        int dec;
     
        //Binary();
        Binary(int dec);
        Binary(int dec, int mem);
        Binary(int* bin, int mem);
        Binary(const Binary& num2);
        ~Binary() {
            delete[]bin;
        }
        friend Binary operator+(Binary num1, Binary num2);
        friend Binary operator-(Binary num1, Binary num2);
        friend Binary operator*(Binary num1, Binary num2);
        friend void dectobin(int dec, int* bin, int mem);
        friend int bintodec(int* bin, int mem);
        int getmem();
        int getdec();
        int* getbin();
        void printbin();
        void printdec();
    };
     
    void dectobin(int dec, int* bin, int mem) {
        int dec1 = dec;
        for (int i = 0; i < mem; i++) {
     
            bin[i] = dec1 % 2;
            dec1 = (dec1 - bin[i]) / 2;
        }
    }
     
    int bintodec(int* bin, int mem) {
        int dec = 0;
        for (int i = 0; i < mem; i++) {
            dec = dec + bin[i] * (int)pow(2, i);
        }
        return dec;
    }
    /*
    Binary::Binary() {
        mem = 8;
        dec = 0;
        bin = new int[mem];
        dectobin(dec, bin, mem);
    }
    */
    Binary::Binary(int d) {
        dec = d;
        mem = 8;
        if (d >= 0 && d < pow(2, 8)) mem = 8;
        if (d >= pow(2, 8) && d < pow(2, 16)) mem = 16;
        if (d >= pow(2, 16) && d < pow(2, 32)) mem = 32;
        bin = new int[mem];
        dectobin(dec, bin, mem);
    }
     
    Binary::Binary(int d, int m) {
        dec = d;
        mem = m;
        bin = new int[mem];
        dectobin(dec, bin, mem);
    }
     
    Binary::Binary(int* b, int m) {
        mem = m;
        bin = new int[mem];
        for (int i = 0; i < mem; i++) {
            bin[i] = b[i];
        }
        dec = bintodec(bin, mem);
    }
     
    Binary::Binary(const Binary& num2) {
        mem = num2.mem;
        dec = num2.dec;
        bin = new int[mem];
        for (int i = 0; i < mem; i++) {
            bin[i] = num2.bin[i];
        }
    }
     
    int Binary::getmem() {
        return this->mem;
    }
     
    int* Binary::getbin() {
        return bin;
    }
     
    int Binary::getdec() {
        return this->dec;
    }
     
    void Binary::printbin() {
        for (int i = mem - 1; i >= 0; i--) {
            cout << bin[i];
        }
    }
     
    void Binary::printdec() {
        cout << dec;
    }
     
    Binary operator+(Binary num1, Binary num2) {
        int* bin1 = num1.getbin();
        int* bin2 = num2.getbin();
        int mem3;
        if (num1.getmem() > num2.getmem()) {
            mem3 = num1.getmem();
            int* bin3 = new int[mem3];
            for (int i = 0; i < mem3; i++) {
                bin3[i] = 0;
            }
            for (int i = 0; i < mem3 - 8; i++) {
                bin3[i] += bin1[i] + bin2[i];
                if (bin3[i] > 1) {
                    bin3[i] -= 2;
                    bin3[i + 1] += 1;
                }
            }
            for (int i = mem3 - 8; i < mem3; i++) {
                bin3[i] += bin1[i];
                if (i == mem3 - 1 && bin3[i] > 1) {
                    cout << endl << "Ошибка. Недостаточно выделенной памяти в размере " << mem3 << " бит" << endl;
                    return Binary(0);
                }
                if (bin3[i] > 1) {
                    bin3[i] -= 2;
                    bin3[i + 1] += 1;
                }
            }
            return Binary(bin3, mem3);
        }
     
        if (num1.getmem() == num2.getmem()) {
            mem3 = num1.getmem();
            int* bin3 = new int[mem3];
            for (int i = 0; i < mem3; i++) {
                bin3[i] = 0;
            }
            for (int i = 0; i < mem3; i++) {
                bin3[i] += bin1[i] + bin2[i];
                if (i == mem3 - 1 && bin3[i] > 1) {
                    cout << endl << "Ошибка. Недостаточно выделенной памяти в размере " << mem3 << " бит" << endl;
                    return Binary(0);
                }
                if (bin3[i] > 1) {
                    bin3[i] -= 2;
                    if (i < mem3 - 1) bin3[i + 1] += 1;
                }
     
            }
            return Binary(bin3, mem3);
        }
     
        if (num1.getmem() < num2.getmem()) {
            mem3 = num2.getmem();
            int* bin3 = new int[mem3];
            for (int i = 0; i < mem3; i++) {
                bin3[i] = 0;
            }
            for (int i = 0; i < mem3 - 8; i++) {
                bin3[i] += bin1[i] + bin2[i];
                if (bin3[i] > 1) {
                    bin3[i] -= 2;
                    bin3[i + 1] += 1;
                }
            }
            for (int i = mem3 - 8; i < mem3; i++) {
                bin3[i] += bin2[i];
                if (i == mem3 - 1 && bin3[i] == 2) {
                    cout << endl << "Ошибка. Недостаточно выделенной памяти в размере " << mem3 << " бит" << endl;
                    return Binary(0);
                }
                if (bin3[i] > 1) {
                    bin3[i] -= 2;
                    bin3[i + 1] += 1;
                }
     
            }
            return Binary(bin3, mem3);
        }
        return Binary(0);
    }
     
    Binary operator-(Binary num1, Binary num2) {
        int* bin1 = num1.getbin();
        int* bin2 = num2.getbin();
     
        int mem3 = 8;
        if (num1.getmem() > num2.getmem()) {
            mem3 = num1.getmem();
            int* bin3 = new int[mem3];
            for (int i = 0; i < mem3 - 8; i++) {
                if (bin1[i] < bin2[i]) {
                    bin1[i + 1] -= 1;
                    bin1[i] += 2;
                    bin3[i] = bin1[i] - bin2[i];
                }
                else bin3[i] = bin1[i] - bin2[i];
            }
            for (int i = mem3 - 8; i < mem3; i++) {
                bin3[i] = bin1[i];
            }
     
            return Binary(bin3, mem3);
        }
     
        if (num1.getmem() < num2.getmem()) {
            mem3 = num1.getmem();
            int* bin3 = new int[mem3];
            for (int i = 0; i < mem3 - 8; i++) {
                if (bin2[i] < bin1[i]) {
                    bin2[i + 1] -= 1;
                    bin2[i] += 2;
                    bin3[i] = bin2[i] - bin1[i];
                }
                else bin3[i] = bin2[i] - bin1[i];
            }
            for (int i = mem3 - 8; i < mem3; i++) {
                bin3[i] = bin2[i];
            }
     
            return Binary(bin3, mem3);
        }
     
        if (num1.getmem() == num2.getmem()) {
            mem3 = num1.getmem();
            int* bin3 = new int[mem3];
            for (int i = 0; i < mem3; i++) {
                if (num1.getdec() > num2.getdec()) {
                    if (bin1[i] < bin2[i]) {
                        bin1[i + 1] -= 1;
                        bin1[i] += 2;
                        bin3[i] = bin1[i] - bin2[i];
                    }
                    else bin3[i] = bin1[i] - bin2[i];
                }
                if (num1.getdec() <= num2.getdec()) {
                    if (bin2[i] < bin1[i]) {
                        bin2[i + 1] -= 1;
                        bin2[i] += 2;
                        bin3[i] = bin2[i] - bin1[i];
                    }
                    else bin3[i] = bin2[i] - bin1[i];
                }
            }
     
            return Binary(bin3, mem3);
        }
        return Binary(0);
    }
     
    Binary operator*(Binary num1, Binary num2) {
        int* bin1 = num1.getbin();
        int* bin2 = num2.getbin();
        int mem3 = 8;
        int mem1 = num1.getmem();
        int mem2 = num2.getmem();
        int d1 = num1.getdec();
        int d2 = num2.getdec();
        int d = d1 * d2;
        if (d >= 0 && d < pow(2, 8)) mem3 = 8;
        if (d >= pow(2, 8) + 1 && d < pow(2, 16)) mem3 = 16;
        if (d >= pow(2, 16) + 1 && d < pow(2, 32)) mem3 = 32;
        if (d > pow(2, 32)) {
            cout << "Максимального размера выделяемой памяти недостаточно для получения ответа. Операция прервана";
            return Binary(0);
        }
        int* bin3 = new int[mem3];
        for (int i = 0; i < mem3; i++) {
            bin3[i] = 0;
        }
     
        for (int i = 0; i < mem1; i++) {
            for (int j = 0; j < mem2; j++) {
                bin3[i + j] += bin1[i] * bin2[j];
                if (bin3[i + j] > 1) {
                    bin3[i + j] -= 2;
                    bin3[i + j + 1] += 1;
                }
            }
        }
     
        return Binary(bin3, mem3);
    }
     
    void main() {
        setlocale(LC_ALL, "Ru");
        int otv(1);
        int d1(0), d2(0), count(0);
        char zn1('+'), zn2('+'), zn3('+'); //переменные для хранения знаков. Знак 2 определяем действие между числами. Знаки 1 и 3 - знаки чисел
        string v;//строка, для считывания выражения
        string D1, D2; //строки, в которые запишем числа
        //while (otv == 1) {
            cout << "Введите выражение" << endl;
            getline(cin, v); //считываем введенное выражение в строку
            int length = v.length(); // определяем длину строки
            /////////////////////////////////////////////
            //1 ЭТАП: ОПРЕДЕЛЕНИЕ ЗНАКОВ В ВЫРАЖЕНИИ//
            count = 0; //зануляем счетчик кол-ва знаков в строке
            for (int i = 0; i < length; i++) {
                if (v[i] == '-' || v[i] == '+' || v[i] == '*') count++; //узнаем кол-во знаков в строке
            }
     
            int* pointer = new int[3];//в этот массив сохраним номера позиций знаков, чтобы разграничить и считать числа
            for (int i = 0; i < 3; i++) {
                pointer[i] = 0;
            }
            if (count == 1) { // если в строке только 1 знак
                zn1 = '+';
                zn3 = '+'; // то 1 и 3 знак - это +
                for (int i = 0; i < length; i++) {
                    if (v[i] == '-' || v[i] == '+' || v[i] == '*') {
                        zn2 = v[i]; //определяем знак 2
                        pointer[0] = i;
                    }
                }
                D1.assign(v, 0, pointer[0]);//сохраняем первое число в строку
                d1 = atoi(D1.c_str());//переводим строку в число
                D2.assign(v, pointer[0] + 1, length - pointer[0]);//по аналогии
                d2 = atoi(D2.c_str());
            }
     
     
            if (count == 2) { //если в строке  2 знака, то
                count = 0;
                if (v[0] == '-') {// если первый знак -, то далее ищем второй знак
                    zn1 = '-';
                    for (int i = 0; i < length; i++) {
                        if (v[i] == '-' || v[i] == '+' || v[i] == '*') {
                            zn2 = v[i];
                            pointer[0] = i;
                        }
                    }
                    zn3 = '+';
                    D1.assign(v, 1, pointer[0] - 1);//сохраняем первое число в строку
                    d1 = atoi(D1.c_str());//переводим строку в число
                    D2.assign(v, pointer[0] + 1, length - pointer[0]);//по аналогии
                    d2 = atoi(D2.c_str());
                }
                else { //иначе 
                    count = 0; //зануляем счетчик кол-ва знаков
                    for (int i = 0; i < length; i++) {
                        if (v[i] == '-' || v[i] == '+' || v[i] == '*') {
                            if (count == 1) {
                                zn3 = v[i];
                                count++;
                                pointer[1] = i;
                            }
                            if (count == 0) {
                                zn2 = v[i];
                                count++;
                                pointer[0] = i;
                            }
                        }
                    }
                    D1.assign(v, 0, pointer[0]);//сохраняем первое число в строку
                    d1 = atoi(D1.c_str());//переводим строку в число
                    D2.assign(v, pointer[1] + 1, length - pointer[1]);//по аналогии
                    d2 = atoi(D2.c_str());
                }
                count = 2;
            }
     
     
            if (count == 3) {//если в строке 3 знака, то сохраняем знаки поочередно 
                count = 0;
                for (int i = 0; i < length; i++) {
                    if (v[i] == '-' || v[i] == '+' || v[i] == '*') {
                        if (count == 2) {
                            zn3 = v[i];
                            count++;
                            pointer[2] = i;
                        }
                        if (count == 1) {
                            zn2 = v[i];
                            count++;
                            pointer[1] = i;
                        }
                        if (count == 0) {
                            zn1 = v[i];
                            count++;
                            pointer[0] = i;
                        }
                    }
                }
                D1.assign(v, pointer[0] + 1, pointer[1] - pointer[0] - 1);//сохраняем первое число в строку
                d1 = atoi(D1.c_str());//переводим строку в число
                D2.assign(v, pointer[2] + 1, length - pointer[2]);//по аналогии
                d2 = atoi(D2.c_str());
                count = 3;
            }
            /////////////////////
            //2 ЭТАП. ВЫЧИСЛЕНИЕ ВЫРАЖЕНИЯ//
            if (count == 1) {
                Binary bin1(d1), bin2(d2);
                Binary bin3(bin1 + bin2), bin4(bin1 - bin2), bin5(bin1 * bin2), bin6(bin2 - bin1);
                switch (zn2)
                {
                case '+':
                    bin1.printbin(); cout << " + "; bin2.printbin(); cout << " = "; bin3.printbin(); cout << endl;
                    bin1.printdec(); cout << " + "; bin2.printdec(); cout << " = "; bin3.printdec(); cout << endl;
                    break;
                case '-':
                    if (bin1.getdec() < bin2.getdec()) {
                        bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = -"; bin6.printbin(); cout << endl;
                        bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = -"; bin6.printdec(); cout << endl;
                        break;
                    }
                    else {
                        bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = "; bin4.printbin(); cout << endl;
                        bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = "; bin4.printdec(); cout << endl;
                        break;
                    }
                case '*':
                    bin1.printbin(); cout << " * "; bin2.printbin(); cout << " = "; bin5.printbin(); cout << endl;
                    bin1.printdec(); cout << " * "; bin2.printdec(); cout << " = "; bin5.printdec(); cout << endl;
                    break;
                default: cout << "Введен неверный знак. Попробуйте еще раз" << endl;
                    break;
                }
            }
            else {
                Binary bin1(d1), bin2(d2);
                Binary bin3(bin1 + bin2), bin4(bin1 - bin2), bin5(bin1 * bin2), bin6(bin2 - bin1);
                switch (zn2)
                {
                case '+':
                    if (zn1 == '+' && zn3 == '+') {
                        bin1.printbin(); cout << " + "; bin2.printbin(); cout << " = "; bin3.printbin(); cout << endl;
                        bin1.printdec(); cout << " + "; bin2.printdec(); cout << " = "; bin3.printdec(); cout << endl;
                        break;
                    }
                    if (zn1 == '-' && zn3 == '+') {
                        if (bin1.getdec() <= bin2.getdec()) {
                            cout << "-"; bin1.printbin(); cout << " + "; bin2.printbin(); cout << " = "; bin6.printbin(); cout << endl;
                            cout << "-"; bin1.printdec(); cout << " + "; bin2.printdec(); cout << " = "; bin6.printdec(); cout << endl;
                            break;
                        }
                        else {
                            cout << "-"; bin1.printbin(); cout << " + "; bin2.printbin(); cout << " = -"; bin4.printbin(); cout << endl;
                            cout << "-"; bin1.printdec(); cout << " + "; bin2.printdec(); cout << " = -"; bin4.printdec(); cout << endl;
                            break;
                        }
                    }
                    if (zn1 == '+' && zn3 == '-') {
                        if (bin1.getdec() < bin2.getdec()) {
                            bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = -"; bin6.printbin(); cout << endl;
                            bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = -"; bin6.printdec(); cout << endl;
                            break;
                        }
                        else {
                            bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = "; bin4.printbin(); cout << endl;
                            bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = "; bin4.printdec(); cout << endl;
                            break;
                        }
                    }
                    if (zn1 == '-' && zn3 == '-') {
                        cout << '-'; bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = -"; bin3.printbin(); cout << endl;
                        cout << '-'; bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = -"; bin3.printdec(); cout << endl;
                        break;
                    }
                case '-':
                    if (zn1 == '+' && zn3 == '+') {
                        if (bin1.getdec() < bin2.getdec()) {
                            bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = -"; bin6.printbin(); cout << endl;
                            bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = -"; bin6.printdec(); cout << endl;
                            break;
                        }
                        else {
                            bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = "; bin4.printbin(); cout << endl;
                            bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = "; bin4.printdec(); cout << endl;
                            break;
                        }
                    }
                    if (zn1 == '-' && zn3 == '+') {
                            bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = -"; bin3.printbin(); cout << endl;
                            bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = -"; bin3.printdec(); cout << endl;
                            break;
                            }
                    if (zn1 == '+' && zn3 == '-') {
                        bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = "; bin3.printbin(); cout << endl;
                        bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = "; bin3.printdec(); cout << endl;
                        break;
                    }
                    if (zn1 == '-' && zn3 == '-') {
                        if (bin1.getdec() <= bin2.getdec()) {
                            cout << "-"; bin1.printbin(); cout << " + "; bin2.printbin(); cout << " = "; bin6.printbin(); cout << endl;
                            cout << "-"; bin1.printdec(); cout << " + "; bin2.printdec(); cout << " = "; bin6.printdec(); cout << endl;
                            break;
                        }
                        else {
                            cout << "-"; bin1.printbin(); cout << " + "; bin2.printbin(); cout << " = -"; bin4.printbin(); cout << endl;
                            cout << "-"; bin1.printdec(); cout << " + "; bin2.printdec(); cout << " = -"; bin4.printdec(); cout << endl;
                            break;
                        }
                    }
                case '*':
                    if (zn1 == '+' && zn3 == '+') {
                        bin1.printbin(); cout << " * "; bin2.printbin(); cout << " = "; bin5.printbin(); cout << endl;
                        bin1.printdec(); cout << " * "; bin2.printdec(); cout << " = "; bin5.printdec(); cout << endl;
                        break;
                    }
                    if (zn1 == '-' && zn3 == '+') {
                        cout << "-"; bin1.printbin(); cout << " * "; bin2.printbin(); cout << " = -"; bin5.printbin(); cout << endl;
                        cout << "-"; bin1.printdec(); cout << " * "; bin2.printdec(); cout << " = -"; bin5.printdec(); cout << endl;
                        break;
                    }
                    if (zn1 == '+' && zn3 == '-') {
                        bin1.printbin(); cout << " * (-"; bin2.printbin(); cout << ") = -"; bin5.printbin(); cout << endl;
                        bin1.printdec(); cout << " * (-"; bin2.printdec(); cout << ") = -"; bin5.printdec(); cout << endl;
                        break;
                    }
                    if (zn1 == '-' && zn3 == '-') {
                        bin1.printbin(); cout << " * "; bin2.printbin(); cout << " = "; bin5.printbin(); cout << endl;
                        bin1.printdec(); cout << " * "; bin2.printdec(); cout << " = "; bin5.printdec(); cout << endl;
                        break;
                    }
                default: cout << "Введен неверный знак. Попробуйте еще раз" << endl;
                    break;
                }
            }
            otv = 1;
        //}
     
    }

    Миниатюры

    Программа завершила работу с кодом -1073740940
     

    0

    Вездепух

    Эксперт CЭксперт С++

    10836 / 5854 / 1588

    Регистрация: 18.10.2014

    Сообщений: 14,519

    30.01.2021, 22:35

    11

    Цитата
    Сообщение от Nikis0715
    Посмотреть сообщение

    С умножением проблем нет.

    Если я сказал, что с умножением проблемы есть, значит с умножением проблемы есть. Я их вам указал. Это не обсуждается.

    Что там у вас творится в остальных функциях я даже не смотрел, т.е. программа всегда уверенно падает на умножении.

    Цитата
    Сообщение от Nikis0715
    Посмотреть сообщение

    В фото требования к программе.

    И каким же из этих требований соответствует ввод «260 и 2»?

    0

    0 / 0 / 0

    Регистрация: 06.10.2020

    Сообщений: 26

    30.01.2021, 22:44

     [ТС]

    12

    Попробуйте ввести 260+2. Программа падает.

    А что не так с циклом умножения?

    0

    TheCalligrapher

    Вездепух

    Эксперт CЭксперт С++

    10836 / 5854 / 1588

    Регистрация: 18.10.2014

    Сообщений: 14,519

    30.01.2021, 22:58

    13

    Цитата
    Сообщение от Nikis0715
    Посмотреть сообщение

    Попробуйте ввести 260+2. Программа падает.

    Верно. Именно это я и вводил. И ваша программа падает именно на умножении.

    Цитата
    Сообщение от Nikis0715
    Посмотреть сообщение

    А что не так с циклом умножения?

    Я же написал уже выше.

    Ваша программа вычислит d = 520 и решит, что для этого хватит 16 двоичных ячеек. То есть mem3 = 16 и размер массива bin3 равен 16.

    А затем ваша программа запустит вышеупомянутые циклы двоичного умножения, в которых mem1 = 16 (это 260) и mem2 = 8 (это 2). В результате сумма i+j в

    C++
    1
    2
    3
    4
    
        for (int i = 0; i < mem1; i++) {
            for (int j = 0; j < mem2; j++) {
                bin3[i + j] += bin1[i] * bin2[j];
                ...

    запросто будет доходить до 22, то есть превышать 16. То есть будет происходить вылет за пределы массива bin3, разрушение памяти и падение.

    Добавлено через 2 минуты

    Цитата
    Сообщение от Nikis0715
    Посмотреть сообщение

    Я убрал конструктор по умолчанию, и программа перестала падать.

    Это бессмысленные танцы с бубном, которые ничего не меняет. С таким же успехом вы можете «пересоздать проект».

    0

    2325 / 1834 / 587

    Регистрация: 29.06.2020

    Сообщений: 6,905

    30.01.2021, 23:03

    14

    целый int для 0 или 1 ?

    0

    Nikis0715

    0 / 0 / 0

    Регистрация: 06.10.2020

    Сообщений: 26

    30.01.2021, 23:11

     [ТС]

    15

    Моя проблема ушла. Убрал в main создание новых объектов класса при подсчетах

    C++
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    
    if (count == 1) {
                Binary bin1(d1), bin2(d2);
                //Binary bin3(bin1 + bin2), (bin1 - bin2)(bin1 - bin2), (bin2 * bin1)(bin1 * bin2), (bin2 - bin1)(bin2 - bin1);
                switch (zn2)
                {
                    case '+':
                        bin1.printbin(); cout << " + "; bin2.printbin(); cout << " = "; (bin1+bin2).printbin(); cout << endl;
                        bin1.printdec(); cout << " + "; bin2.printdec(); cout << " = "; (bin1 + bin2).printdec(); cout << endl;
                        break;
                    case '-':
                        if (bin1.getdec() < bin2.getdec()) {
                            bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = -"; (bin2 - bin1).printbin(); cout << endl;
                            bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = -"; (bin2 - bin1).printdec(); cout << endl;
                            break;
                        }
                        else {
                            bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = "; (bin1 - bin2).printbin(); cout << endl;
                            bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = "; (bin1 - bin2).printdec(); cout << endl;
                            break;
                        }
                    case '*': {
                        bin1.printbin(); cout << " * "; bin2.printbin(); cout << " = "; (bin2 * bin1).printbin(); cout << endl;
                        bin1.printdec(); cout << " * "; bin2.printdec(); cout << " = "; (bin2 * bin1).printdec(); cout << endl;
                        break;
                    }
                    default: cout << "Введен неверный знак. Попробуйте еще раз" << endl;
                        break;
                }
                
            }
            else {
                Binary bin1(d1), bin2(d2);
                //Binary bin3(bin1 + bin2), (bin1 - bin2)(bin1 - bin2), (bin2 * bin1)(bin1 * bin2), (bin2 - bin1)(bin2 - bin1);
                switch (zn2)
                {
                case '+':
                    if (zn1 == '+' && zn3 == '+') {
                        bin1.printbin(); cout << " + "; bin2.printbin(); cout << " = "; (bin1 + bin2).printbin(); cout << endl;
                        bin1.printdec(); cout << " + "; bin2.printdec(); cout << " = "; (bin1 + bin2).printdec(); cout << endl;
                        break;
                    }
                    if (zn1 == '-' && zn3 == '+') {
                        if (bin1.getdec() <= bin2.getdec()) {
                            cout << "-"; bin1.printbin(); cout << " + "; bin2.printbin(); cout << " = "; (bin2 - bin1).printbin(); cout << endl;
                            cout << "-"; bin1.printdec(); cout << " + "; bin2.printdec(); cout << " = "; (bin2 - bin1).printdec(); cout << endl;
                            break;
                        }
                        else {
                            cout << "-"; bin1.printbin(); cout << " + "; bin2.printbin(); cout << " = -"; (bin1 - bin2).printbin(); cout << endl;
                            cout << "-"; bin1.printdec(); cout << " + "; bin2.printdec(); cout << " = -"; (bin1 - bin2).printdec(); cout << endl;
                            break;
                        }
                    }
                    if (zn1 == '+' && zn3 == '-') {
                        if (bin1.getdec() < bin2.getdec()) {
                            bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = -"; (bin2 - bin1).printbin(); cout << endl;
                            bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = -"; (bin2 - bin1).printdec(); cout << endl;
                            break;
                        }
                        else {
                            bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = "; (bin1 - bin2).printbin(); cout << endl;
                            bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = "; (bin1 - bin2).printdec(); cout << endl;
                            break;
                        }
                    }
                    if (zn1 == '-' && zn3 == '-') {
                        cout << '-'; bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = -"; (bin1 + bin2).printbin(); cout << endl;
                        cout << '-'; bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = -"; (bin1 + bin2).printdec(); cout << endl;
                        break;
                    }
                case '-':
                    if (zn1 == '+' && zn3 == '+') {
                        if (bin1.getdec() < bin2.getdec()) {
                            bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = -"; (bin2 - bin1).printbin(); cout << endl;
                            bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = -"; (bin2 - bin1).printdec(); cout << endl;
                            break;
                        }
                        else {
                            bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = "; (bin1 - bin2).printbin(); cout << endl;
                            bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = "; (bin1 - bin2).printdec(); cout << endl;
                            break;
                        }
                    }
                    if (zn1 == '-' && zn3 == '+') {
                            bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = -"; (bin1 + bin2).printbin(); cout << endl;
                            bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = -"; (bin1 + bin2).printdec(); cout << endl;
                            break;
                            }
                    if (zn1 == '+' && zn3 == '-') {
                        bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = "; (bin1 + bin2).printbin(); cout << endl;
                        bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = "; (bin1 + bin2).printdec(); cout << endl;
                        break;
                    }
                    if (zn1 == '-' && zn3 == '-') {
                        if (bin1.getdec() <= bin2.getdec()) {
                            cout << "-"; bin1.printbin(); cout << " + "; bin2.printbin(); cout << " = "; (bin2 - bin1).printbin(); cout << endl;
                            cout << "-"; bin1.printdec(); cout << " + "; bin2.printdec(); cout << " = "; (bin2 - bin1).printdec(); cout << endl;
                            break;
                        }
                        else {
                            cout << "-"; bin1.printbin(); cout << " + "; bin2.printbin(); cout << " = -"; (bin1 - bin2).printbin(); cout << endl;
                            cout << "-"; bin1.printdec(); cout << " + "; bin2.printdec(); cout << " = -"; (bin1 - bin2).printdec(); cout << endl;
                            break;
                        }
                    }
                case '*':
                    if (zn1 == '+' && zn3 == '+') {
                        bin1.printbin(); cout << " * "; bin2.printbin(); cout << " = "; (bin2 * bin1).printbin(); cout << endl;
                        bin1.printdec(); cout << " * "; bin2.printdec(); cout << " = "; (bin2 * bin1).printdec(); cout << endl;
                        break;
                    }
                    if (zn1 == '-' && zn3 == '+') {
                        cout << "-"; bin1.printbin(); cout << " * "; bin2.printbin(); cout << " = -"; (bin2 * bin1).printbin(); cout << endl;
                        cout << "-"; bin1.printdec(); cout << " * "; bin2.printdec(); cout << " = -"; (bin2 * bin1).printdec(); cout << endl;
                        break;
                    }
                    if (zn1 == '+' && zn3 == '-') {
                        bin1.printbin(); cout << " * (-"; bin2.printbin(); cout << ") = -"; (bin2 * bin1).printbin(); cout << endl;
                        bin1.printdec(); cout << " * (-"; bin2.printdec(); cout << ") = -"; (bin2 * bin1).printdec(); cout << endl;
                        break;
                    }
                    if (zn1 == '-' && zn3 == '-') {
                        bin1.printbin(); cout << " * "; bin2.printbin(); cout << " = "; (bin2 * bin1).printbin(); cout << endl;
                        bin1.printdec(); cout << " * "; bin2.printdec(); cout << " = "; (bin2 * bin1).printdec(); cout << endl;
                        break;
                    }
                default: cout << "Введен неверный знак. Попробуйте еще раз" << endl;
                    break;
                }
            }

    Вот так исправил умножение

    C++
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    
    Binary operator*(Binary num1, Binary num2) {
        int* bin1 = num1.getbin();
        int* bin2 = num2.getbin();
        int mem1 = num1.getmem();
        int mem2 = num2.getmem();
        int mem3 = num1.getmem() + num2.getmem();
        if (mem3 > 32) {
            cout << "Максимального размера выделяемой памяти недостаточно для получения ответа. Операция прервана";
            return Binary(0);
        }
        int* bin3 = new int[mem3];
        for (int i = 0; i < mem3; i++) {
            bin3[i] = 0;
        }
     
        for (int i = 0; i < mem1; i++) {
            for (int j = 0; j < mem2; j++) {
                bin3[i + j] += bin1[i] * bin2[j];
                if (bin3[i + j] > 1) {
                    bin3[i + j] -= 2;
                    bin3[i + j + 1] += 1;
                }
            }
        }
     
        return Binary(bin3, mem3);
    }

    Но теперь почему-то 127+1 выдает 0. Вот весь получившийся код

    C++
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
    402
    403
    404
    405
    406
    407
    408
    409
    410
    411
    412
    413
    414
    415
    416
    417
    418
    419
    420
    421
    422
    423
    424
    425
    426
    427
    428
    429
    430
    431
    432
    433
    434
    435
    436
    437
    438
    439
    440
    441
    442
    443
    444
    445
    446
    447
    448
    449
    450
    451
    452
    453
    454
    455
    456
    457
    458
    459
    460
    461
    462
    463
    464
    465
    466
    467
    468
    469
    470
    471
    472
    473
    474
    475
    476
    477
    478
    479
    480
    481
    482
    483
    484
    485
    486
    487
    488
    489
    490
    491
    492
    493
    494
    495
    496
    497
    498
    499
    500
    501
    502
    503
    504
    505
    506
    507
    508
    509
    510
    511
    512
    513
    514
    515
    516
    517
    518
    519
    520
    521
    
    #include <iostream>
    #include <string>
     
    using namespace std;
     
    class Binary {
    public:
        int mem;
        int* bin;
        int dec;
     
        //Binary();
        Binary(int dec);
        Binary(int dec, int mem);
        Binary(int* bin, int mem);
        Binary(const Binary& num2);
        ~Binary() {
            delete[]bin;
        }
        friend Binary operator+(Binary num1, Binary num2);
        friend Binary operator-(Binary num1, Binary num2);
        friend Binary operator*(Binary num1, Binary num2);
        friend void dectobin(int dec, int* bin, int mem);
        friend int bintodec(int* bin, int mem);
        int getmem();
        int getdec();
        int* getbin();
        void printbin();
        void printdec();
    };
     
    void dectobin(int dec, int* bin, int mem) {
        int dec1 = dec;
        for (int i = 0; i < mem; i++) {
     
            bin[i] = dec1 % 2;
            dec1 = (dec1 - bin[i]) / 2;
        }
    }
     
    int bintodec(int* bin, int mem) {
        int dec = 0;
        for (int i = 0; i < mem; i++) {
            dec = dec + bin[i] * (int)pow(2, i);
        }
        return dec;
    }
    /*
    Binary::Binary() {
        mem = 8;
        dec = 0;
        bin = new int[mem];
        dectobin(dec, bin, mem);
    }
    */
    Binary::Binary(int d) {
        dec = d;
        mem = 8;
        if (d >= 0 && d < pow(2, 8)) mem = 8;
        if (d >= pow(2, 8) && d < pow(2, 16)) mem = 16;
        if (d >= pow(2, 16) && d < pow(2, 32)) mem = 32;
        bin = new int[mem];
        dectobin(dec, bin, mem);
    }
     
    Binary::Binary(int d, int m) {
        dec = d;
        mem = m;
        bin = new int[mem];
        dectobin(dec, bin, mem);
    }
     
    Binary::Binary(int* b, int m) {
        mem = m;
        bin = new int[mem];
        for (int i = 0; i < mem; i++) {
            bin[i] = b[i];
        }
        dec = bintodec(bin, mem);
    }
     
    Binary::Binary(const Binary& num2) {
        mem = num2.mem;
        dec = num2.dec;
        bin = new int[mem];
        for (int i = 0; i < mem; i++) {
            bin[i] = num2.bin[i];
        }
    }
     
    int Binary::getmem() {
        return this->mem;
    }
     
    int* Binary::getbin() {
        return bin;
    }
     
    int Binary::getdec() {
        return this->dec;
    }
     
    void Binary::printbin() {
        for (int i = mem - 1; i >= 0; i--) {
            cout << bin[i];
        }
    }
     
    void Binary::printdec() {
        cout << dec;
    }
     
    Binary operator+(Binary num1, Binary num2) {
        int* bin1 = num1.getbin();
        int* bin2 = num2.getbin();
        int mem3;
        if (num1.getmem() > num2.getmem()) {
            mem3 = num1.getmem();
            int* bin3 = new int[mem3];
            for (int i = 0; i < mem3; i++) {
                bin3[i] = 0;
            }
            for (int i = 0; i < mem3 - 8; i++) {
                bin3[i] += bin1[i] + bin2[i];
                if (bin3[i] > 1) {
                    bin3[i] -= 2;
                    bin3[i + 1] += 1;
                }
            }
            for (int i = mem3 - 8; i < mem3; i++) {
                bin3[i] += bin1[i];
                if (bin3[mem3 - 1] > 1) {
                    cout << endl << "Ошибка. Недостаточно выделенной памяти в размере " << mem3 << " бит" << endl;
                    return Binary(0);
                }
                if (bin3[i] > 1) {
                    bin3[i] -= 2;
                    if (i < mem3 - 2) bin3[i + 1] += 1;
                }
            }
            return Binary(bin3, mem3);
        }
     
        if (num1.getmem() == num2.getmem()) {
            mem3 = num1.getmem();
            int* bin3 = new int[mem3];
            for (int i = 0; i < mem3; i++) {
                bin3[i] = 0;
            }
            for (int i = 0; i < mem3; i++) {
                bin3[i] += bin1[i] + bin2[i];
                if (bin3[mem3 - 1] > 1) {
                    cout << endl << "Ошибка. Недостаточно выделенной памяти в размере " << mem3 << " бит" << endl;
                    return Binary(0);
                }
                if (bin3[i] > 1) {
                    bin3[i] -= 2;
                    if (i < mem3 - 2) bin3[i + 1] += 1;
                }
     
            }
            return Binary(bin3, mem3);
        }
     
        if (num1.getmem() < num2.getmem()) {
            mem3 = num2.getmem();
            int* bin3 = new int[mem3];
            for (int i = 0; i < mem3; i++) {
                bin3[i] = 0;
            }
            for (int i = 0; i < mem3 - 8; i++) {
                bin3[i] += bin1[i] + bin2[i];
                if (bin3[i] > 1) {
                    bin3[i] -= 2;
                    bin3[i + 1] += 1;
                }
            }
            for (int i = mem3 - 8; i < mem3; i++) {
                if (i == mem3 - 1 && bin3[mem3 -1 ] == 2) {
                    cout << endl << "Ошибка. Недостаточно выделенной памяти в размере " << mem3 << " бит" << endl;
                    return Binary(0);
                }
                if (bin3[i] > 1) {
                    bin3[i] -= 2;
                    if (i < mem3 - 2) bin3[i + 1] += 1;
                }
     
            }
            return Binary(bin3, mem3);
        }
        return Binary(0);
    }
     
    Binary operator-(Binary num1, Binary num2) {
        int* bin1 = num1.getbin();
        int* bin2 = num2.getbin();
     
        int mem3 = 8;
        if (num1.getmem() > num2.getmem()) {
            mem3 = num1.getmem();
            int* bin3 = new int[mem3];
            for (int i = 0; i < mem3 - 8; i++) {
                if (bin1[i] < bin2[i]) {
                    bin1[i + 1] -= 1;
                    bin1[i] += 2;
                    bin3[i] = bin1[i] - bin2[i];
                }
                else bin3[i] = bin1[i] - bin2[i];
            }
            for (int i = mem3 - 8; i < mem3; i++) {
                bin3[i] = bin1[i];
            }
     
            return Binary(bin3, mem3);
        }
     
        if (num1.getmem() < num2.getmem()) {
            mem3 = num2.getmem();
            int* bin3 = new int[mem3];
            for (int i = 0; i < mem3 - 8; i++) {
                if (bin1[i] < bin2[i]) {
                    bin1[i + 1] -= 1;
                    bin1[i] += 2;
                    bin3[i] = bin1[i] - bin2[i];
                }
                else bin3[i] = bin1[i] - bin2[i];
            }
            for (int i = mem3 - 8; i < mem3; i++) {
                bin3[i] = bin1[i];
            }
     
            return Binary(bin3, mem3);
        }
     
        if (num1.getmem() == num2.getmem()) {
            mem3 = num1.getmem();
            int* bin3 = new int[mem3];
            for (int i = 0; i < mem3; i++) {
                    if (bin1[i] < bin2[i]) {
                        bin1[i + 1] -= 1;
                        bin1[i] += 2;
                        bin3[i] = bin1[i] - bin2[i];
                    }
                    else bin3[i] = bin1[i] - bin2[i];
            }
            return Binary(bin3, mem3);
        }
        return Binary(0);
    }
     
    Binary operator*(Binary num1, Binary num2) {
        int* bin1 = num1.getbin();
        int* bin2 = num2.getbin();
        int mem1 = num1.getmem();
        int mem2 = num2.getmem();
        int mem3 = num1.getmem() + num2.getmem();
        if (mem3 > 32) {
            cout << "Максимального размера выделяемой памяти недостаточно для получения ответа. Операция прервана";
            return Binary(0);
        }
        int* bin3 = new int[mem3];
        for (int i = 0; i < mem3; i++) {
            bin3[i] = 0;
        }
     
        for (int i = 0; i < mem1; i++) {
            for (int j = 0; j < mem2; j++) {
                bin3[i + j] += bin1[i] * bin2[j];
                if (bin3[i + j] > 1) {
                    bin3[i + j] -= 2;
                    bin3[i + j + 1] += 1;
                }
            }
        }
     
        return Binary(bin3, mem3);
    }
     
    void main() {
        setlocale(LC_ALL, "Ru");
        int otv(1);
        int d1(0), d2(0), count(0);
        char zn1('+'), zn2('+'), zn3('+'); //переменные для хранения знаков. Знак 2 определяем действие между числами. Знаки 1 и 3 - знаки чисел
        string v;//строка, для считывания выражения
        string D1, D2; //строки, в которые запишем числа
        //while (otv == 1) {
            cout << "Введите выражение" << endl;
            getline(cin, v); //считываем введенное выражение в строку
            int length = v.length(); // определяем длину строки
            /////////////////////////////////////////////
            //1 ЭТАП: ОПРЕДЕЛЕНИЕ ЗНАКОВ В ВЫРАЖЕНИИ//
            count = 0; //зануляем счетчик кол-ва знаков в строке
            for (int i = 0; i < length; i++) {
                if (v[i] == '-' || v[i] == '+' || v[i] == '*') count++; //узнаем кол-во знаков в строке
            }
     
            int* pointer = new int[3];//в этот массив сохраним номера позиций знаков, чтобы разграничить и считать числа
            for (int i = 0; i < 3; i++) {
                pointer[i] = 0;
            }
            if (count == 1) { // если в строке только 1 знак
                zn1 = '+';
                zn3 = '+'; // то 1 и 3 знак - это +
                for (int i = 0; i < length; i++) {
                    if (v[i] == '-' || v[i] == '+' || v[i] == '*') {
                        zn2 = v[i]; //определяем знак 2
                        pointer[0] = i;
                    }
                }
                D1.assign(v, 0, pointer[0]);//сохраняем первое число в строку
                d1 = atoi(D1.c_str());//переводим строку в число
                D2.assign(v, pointer[0] + 1, length - pointer[0]);//по аналогии
                d2 = atoi(D2.c_str());
            }
     
     
            if (count == 2) { //если в строке  2 знака, то
                count = 0;
                if (v[0] == '-') {// если первый знак -, то далее ищем второй знак
                    zn1 = '-';
                    for (int i = 0; i < length; i++) {
                        if (v[i] == '-' || v[i] == '+' || v[i] == '*') {
                            zn2 = v[i];
                            pointer[0] = i;
                        }
                    }
                    zn3 = '+';
                    D1.assign(v, 1, pointer[0] - 1);//сохраняем первое число в строку
                    d1 = atoi(D1.c_str());//переводим строку в число
                    D2.assign(v, pointer[0] + 1, length - pointer[0]);//по аналогии
                    d2 = atoi(D2.c_str());
                }
                else { //иначе 
                    count = 0; //зануляем счетчик кол-ва знаков
                    for (int i = 0; i < length; i++) {
                        if (v[i] == '-' || v[i] == '+' || v[i] == '*') {
                            if (count == 1) {
                                zn3 = v[i];
                                count++;
                                pointer[1] = i;
                            }
                            if (count == 0) {
                                zn2 = v[i];
                                count++;
                                pointer[0] = i;
                            }
                        }
                    }
                    D1.assign(v, 0, pointer[0]);//сохраняем первое число в строку
                    d1 = atoi(D1.c_str());//переводим строку в число
                    D2.assign(v, pointer[1] + 1, length - pointer[1]);//по аналогии
                    d2 = atoi(D2.c_str());
                }
                count = 2;
            }
     
     
            if (count == 3) {//если в строке 3 знака, то сохраняем знаки поочередно 
                count = 0;
                for (int i = 0; i < length; i++) {
                    if (v[i] == '-' || v[i] == '+' || v[i] == '*') {
                        if (count == 2) {
                            zn3 = v[i];
                            count++;
                            pointer[2] = i;
                        }
                        if (count == 1) {
                            zn2 = v[i];
                            count++;
                            pointer[1] = i;
                        }
                        if (count == 0) {
                            zn1 = v[i];
                            count++;
                            pointer[0] = i;
                        }
                    }
                }
                D1.assign(v, pointer[0] + 1, pointer[1] - pointer[0] - 1);//сохраняем первое число в строку
                d1 = atoi(D1.c_str());//переводим строку в число
                D2.assign(v, pointer[2] + 1, length - pointer[2]);//по аналогии
                d2 = atoi(D2.c_str());
                count = 3;
            }
            /////////////////////
            //2 ЭТАП. ВЫЧИСЛЕНИЕ ВЫРАЖЕНИЯ//
            if (count == 1) {
                Binary bin1(d1), bin2(d2);
                //Binary bin3(bin1 + bin2), (bin1 - bin2)(bin1 - bin2), (bin2 * bin1)(bin1 * bin2), (bin2 - bin1)(bin2 - bin1);
                switch (zn2)
                {
                    case '+':
                        bin1.printbin(); cout << " + "; bin2.printbin(); cout << " = "; (bin1+bin2).printbin(); cout << endl;
                        bin1.printdec(); cout << " + "; bin2.printdec(); cout << " = "; (bin1 + bin2).printdec(); cout << endl;
                        break;
                    case '-':
                        if (bin1.getdec() < bin2.getdec()) {
                            bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = -"; (bin2 - bin1).printbin(); cout << endl;
                            bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = -"; (bin2 - bin1).printdec(); cout << endl;
                            break;
                        }
                        else {
                            bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = "; (bin1 - bin2).printbin(); cout << endl;
                            bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = "; (bin1 - bin2).printdec(); cout << endl;
                            break;
                        }
                    case '*': {
                        bin1.printbin(); cout << " * "; bin2.printbin(); cout << " = "; (bin2 * bin1).printbin(); cout << endl;
                        bin1.printdec(); cout << " * "; bin2.printdec(); cout << " = "; (bin2 * bin1).printdec(); cout << endl;
                        break;
                    }
                    default: cout << "Введен неверный знак. Попробуйте еще раз" << endl;
                        break;
                }
                
            }
            else {
                Binary bin1(d1), bin2(d2);
                //Binary bin3(bin1 + bin2), (bin1 - bin2)(bin1 - bin2), (bin2 * bin1)(bin1 * bin2), (bin2 - bin1)(bin2 - bin1);
                switch (zn2)
                {
                case '+':
                    if (zn1 == '+' && zn3 == '+') {
                        bin1.printbin(); cout << " + "; bin2.printbin(); cout << " = "; (bin1 + bin2).printbin(); cout << endl;
                        bin1.printdec(); cout << " + "; bin2.printdec(); cout << " = "; (bin1 + bin2).printdec(); cout << endl;
                        break;
                    }
                    if (zn1 == '-' && zn3 == '+') {
                        if (bin1.getdec() <= bin2.getdec()) {
                            cout << "-"; bin1.printbin(); cout << " + "; bin2.printbin(); cout << " = "; (bin2 - bin1).printbin(); cout << endl;
                            cout << "-"; bin1.printdec(); cout << " + "; bin2.printdec(); cout << " = "; (bin2 - bin1).printdec(); cout << endl;
                            break;
                        }
                        else {
                            cout << "-"; bin1.printbin(); cout << " + "; bin2.printbin(); cout << " = -"; (bin1 - bin2).printbin(); cout << endl;
                            cout << "-"; bin1.printdec(); cout << " + "; bin2.printdec(); cout << " = -"; (bin1 - bin2).printdec(); cout << endl;
                            break;
                        }
                    }
                    if (zn1 == '+' && zn3 == '-') {
                        if (bin1.getdec() < bin2.getdec()) {
                            bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = -"; (bin2 - bin1).printbin(); cout << endl;
                            bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = -"; (bin2 - bin1).printdec(); cout << endl;
                            break;
                        }
                        else {
                            bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = "; (bin1 - bin2).printbin(); cout << endl;
                            bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = "; (bin1 - bin2).printdec(); cout << endl;
                            break;
                        }
                    }
                    if (zn1 == '-' && zn3 == '-') {
                        cout << '-'; bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = -"; (bin1 + bin2).printbin(); cout << endl;
                        cout << '-'; bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = -"; (bin1 + bin2).printdec(); cout << endl;
                        break;
                    }
                case '-':
                    if (zn1 == '+' && zn3 == '+') {
                        if (bin1.getdec() < bin2.getdec()) {
                            bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = -"; (bin2 - bin1).printbin(); cout << endl;
                            bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = -"; (bin2 - bin1).printdec(); cout << endl;
                            break;
                        }
                        else {
                            bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = "; (bin1 - bin2).printbin(); cout << endl;
                            bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = "; (bin1 - bin2).printdec(); cout << endl;
                            break;
                        }
                    }
                    if (zn1 == '-' && zn3 == '+') {
                            bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = -"; (bin1 + bin2).printbin(); cout << endl;
                            bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = -"; (bin1 + bin2).printdec(); cout << endl;
                            break;
                            }
                    if (zn1 == '+' && zn3 == '-') {
                        bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = "; (bin1 + bin2).printbin(); cout << endl;
                        bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = "; (bin1 + bin2).printdec(); cout << endl;
                        break;
                    }
                    if (zn1 == '-' && zn3 == '-') {
                        if (bin1.getdec() <= bin2.getdec()) {
                            cout << "-"; bin1.printbin(); cout << " + "; bin2.printbin(); cout << " = "; (bin2 - bin1).printbin(); cout << endl;
                            cout << "-"; bin1.printdec(); cout << " + "; bin2.printdec(); cout << " = "; (bin2 - bin1).printdec(); cout << endl;
                            break;
                        }
                        else {
                            cout << "-"; bin1.printbin(); cout << " + "; bin2.printbin(); cout << " = -"; (bin1 - bin2).printbin(); cout << endl;
                            cout << "-"; bin1.printdec(); cout << " + "; bin2.printdec(); cout << " = -"; (bin1 - bin2).printdec(); cout << endl;
                            break;
                        }
                    }
                case '*':
                    if (zn1 == '+' && zn3 == '+') {
                        bin1.printbin(); cout << " * "; bin2.printbin(); cout << " = "; (bin2 * bin1).printbin(); cout << endl;
                        bin1.printdec(); cout << " * "; bin2.printdec(); cout << " = "; (bin2 * bin1).printdec(); cout << endl;
                        break;
                    }
                    if (zn1 == '-' && zn3 == '+') {
                        cout << "-"; bin1.printbin(); cout << " * "; bin2.printbin(); cout << " = -"; (bin2 * bin1).printbin(); cout << endl;
                        cout << "-"; bin1.printdec(); cout << " * "; bin2.printdec(); cout << " = -"; (bin2 * bin1).printdec(); cout << endl;
                        break;
                    }
                    if (zn1 == '+' && zn3 == '-') {
                        bin1.printbin(); cout << " * (-"; bin2.printbin(); cout << ") = -"; (bin2 * bin1).printbin(); cout << endl;
                        bin1.printdec(); cout << " * (-"; bin2.printdec(); cout << ") = -"; (bin2 * bin1).printdec(); cout << endl;
                        break;
                    }
                    if (zn1 == '-' && zn3 == '-') {
                        bin1.printbin(); cout << " * "; bin2.printbin(); cout << " = "; (bin2 * bin1).printbin(); cout << endl;
                        bin1.printdec(); cout << " * "; bin2.printdec(); cout << " = "; (bin2 * bin1).printdec(); cout << endl;
                        break;
                    }
                default: cout << "Введен неверный знак. Попробуйте еще раз" << endl;
                    break;
                }
            }
            
            //otv = 1;
        //}
     
    }

    0

    TheCalligrapher

    Вездепух

    Эксперт CЭксперт С++

    10836 / 5854 / 1588

    Регистрация: 18.10.2014

    Сообщений: 14,519

    30.01.2021, 23:23

    16

    По-прежнему:
    Распространенные ошибки
    Распространенные ошибки

    Добавлено через 2 минуты

    Цитата
    Сообщение от Nikis0715
    Посмотреть сообщение

    Вот так исправил умножение

    После такого шага мне не ясно, зачем вы вообще тогда делаете вот это

    Цитата
    Сообщение от Nikis0715
    Посмотреть сообщение

    C++
    1
    2
    3
    
        if (d >= 0 && d < pow(2, 8)) mem = 8;
        if (d >= pow(2, 8) && d < pow(2, 16)) mem = 16;
        if (d >= pow(2, 16) && d < pow(2, 32)) mem = 32;

    Зачем нужны все эти манипуляции, если можно просто везде и всегда выделять ровно 32 и не мучаться?

    0

    Nikis0715

    0 / 0 / 0

    Регистрация: 06.10.2020

    Сообщений: 26

    31.01.2021, 00:21

     [ТС]

    17

    Такие вот требования у преподавателя

    Добавлено через 29 минут
    Добавил перегрузку оператора присваивания, поменял возвращаемое значение main. И самое главное, исправил ошибку в операторе сложения, из-за которой 127+1 было = 0. Вот итоговая программа, полностью рабочая

    C++
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
    402
    403
    404
    405
    406
    407
    408
    409
    410
    411
    412
    413
    414
    415
    416
    417
    418
    419
    420
    421
    422
    423
    424
    425
    426
    427
    428
    429
    430
    431
    432
    433
    434
    435
    436
    437
    438
    439
    440
    441
    442
    443
    444
    445
    446
    447
    448
    449
    450
    451
    452
    453
    454
    455
    456
    457
    458
    459
    460
    461
    462
    463
    464
    465
    466
    467
    468
    469
    470
    471
    472
    473
    474
    475
    476
    477
    478
    479
    480
    481
    482
    483
    484
    485
    486
    487
    488
    489
    490
    491
    492
    493
    494
    495
    496
    497
    498
    499
    500
    501
    502
    503
    504
    505
    506
    507
    508
    509
    510
    511
    512
    513
    514
    515
    516
    517
    518
    519
    520
    521
    522
    523
    524
    525
    526
    527
    528
    529
    530
    531
    532
    533
    
    #include <iostream>
    #include <string>
     
    using namespace std;
     
    class Binary {
    public:
        int mem;
        int* bin;
        int dec;
     
        //Binary();
        Binary(int dec);
        Binary(int dec, int mem);
        Binary(int* bin, int mem);
        Binary(const Binary& num2);
        ~Binary() {
            delete[]bin;
        }
        friend Binary operator+(Binary num1, Binary num2);
        friend Binary operator-(Binary num1, Binary num2);
        friend Binary operator*(Binary num1, Binary num2);
        Binary& operator=(const Binary& num1);
        friend void dectobin(int dec, int* bin, int mem);
        friend int bintodec(int* bin, int mem);
        int getmem();
        int getdec();
        int* getbin();
        void printbin();
        void printdec();
    };
     
    void dectobin(int dec, int* bin, int mem) {
        int dec1 = dec;
        for (int i = 0; i < mem; i++) {
     
            bin[i] = dec1 % 2;
            dec1 = (dec1 - bin[i]) / 2;
        }
    }
     
    int bintodec(int* bin, int mem) {
        int dec = 0;
        for (int i = 0; i < mem; i++) {
            dec = dec + bin[i] * (int)pow(2, i);
        }
        return dec;
    }
    /*
    Binary::Binary() {
        mem = 8;
        dec = 0;
        bin = new int[mem];
        dectobin(dec, bin, mem);
    }
    */
    Binary& Binary::operator=(const Binary& num2) {
        if (this == &num2) return *this;
        delete[] this->bin;
        dec = num2.dec;
        mem = num2.mem;
        bin = new int[mem];
        for (int i = 0; i < mem; i++) {
            bin[i] = num2.bin[i];
        }
        return *this;
    }
    Binary::Binary(int d) {
        dec = d;
        mem = 8;
        if (d >= 0 && d < pow(2, 8)) mem = 8;
        if (d >= pow(2, 8) && d < pow(2, 16)) mem = 16;
        if (d >= pow(2, 16) && d < pow(2, 32)) mem = 32;
        bin = new int[mem];
        dectobin(dec, bin, mem);
    }
     
    Binary::Binary(int d, int m) {
        dec = d;
        mem = m;
        bin = new int[mem];
        dectobin(dec, bin, mem);
    }
     
    Binary::Binary(int* b, int m) {
        mem = m;
        bin = new int[mem];
        for (int i = 0; i < mem; i++) {
            bin[i] = b[i];
        }
        dec = bintodec(bin, mem);
    }
     
    Binary::Binary(const Binary& num2) {
        mem = num2.mem;
        dec = num2.dec;
        bin = new int[mem];
        for (int i = 0; i < mem; i++) {
            bin[i] = num2.bin[i];
        }
    }
     
    int Binary::getmem() {
        return this->mem;
    }
     
    int* Binary::getbin() {
        return bin;
    }
     
    int Binary::getdec() {
        return this->dec;
    }
     
    void Binary::printbin() {
        for (int i = mem - 1; i >= 0; i--) {
            cout << bin[i];
        }
    }
     
    void Binary::printdec() {
        cout << dec;
    }
     
    Binary operator+(Binary num1, Binary num2) {
        int* bin1 = num1.getbin();
        int* bin2 = num2.getbin();
        int mem3;
        if (num1.getmem() > num2.getmem()) {
            mem3 = num1.getmem();
            int* bin3 = new int[mem3];
            for (int i = 0; i < mem3; i++) {
                bin3[i] = 0;
            }
            for (int i = 0; i < mem3 - 8; i++) {
                bin3[i] += bin1[i] + bin2[i];
                if (bin3[i] > 1) {
                    bin3[i] -= 2;
                    bin3[i + 1] += 1;
                }
            }
            for (int i = mem3 - 8; i < mem3; i++) {
                bin3[i] += bin1[i];
                if (bin3[mem3 - 1] > 1) {
                    cout << endl << "Ошибка. Недостаточно выделенной памяти в размере " << mem3 << " бит" << endl;
                    return Binary(0);
                }
                if (bin3[i] > 1) {
                    bin3[i] -= 2;
                    if (i < mem3 - 1) bin3[i + 1] += 1;
                }
            }
            return Binary(bin3, mem3);
        }
     
        if (num1.getmem() == num2.getmem()) {
            mem3 = num1.getmem();
            int* bin3 = new int[mem3];
            for (int i = 0; i < mem3; i++) {
                bin3[i] = 0;
            }
            for (int i = 0; i < mem3; i++) {
                bin3[i] += bin1[i] + bin2[i];
                if (bin3[mem3 - 1] > 1) {
                    cout << endl << "Ошибка. Недостаточно выделенной памяти в размере " << mem3 << " бит" << endl;
                    return Binary(0);
                }
                if (bin3[i] > 1) {
                    bin3[i] -= 2;
                    if (i < mem3 - 1) bin3[i + 1] += 1;
                }
     
            }
            return Binary(bin3, mem3);
        }
     
        if (num1.getmem() < num2.getmem()) {
            mem3 = num2.getmem();
            int* bin3 = new int[mem3];
            for (int i = 0; i < mem3; i++) {
                bin3[i] = 0;
            }
            for (int i = 0; i < mem3 - 8; i++) {
                bin3[i] += bin1[i] + bin2[i];
                if (bin3[i] > 1) {
                    bin3[i] -= 2;
                    bin3[i + 1] += 1;
                }
            }
            for (int i = mem3 - 8; i < mem3; i++) {
                if (i == mem3 - 1 && bin3[mem3 -1 ] == 2) {
                    cout << endl << "Ошибка. Недостаточно выделенной памяти в размере " << mem3 << " бит" << endl;
                    return Binary(0);
                }
                if (bin3[i] > 1) {
                    bin3[i] -= 2;
                    if (i < mem3 - 1) bin3[i + 1] += 1;
                }
     
            }
            return Binary(bin3, mem3);
        }
        return Binary(0);
    }
     
    Binary operator-(Binary num1, Binary num2) {
        int* bin1 = num1.getbin();
        int* bin2 = num2.getbin();
     
        int mem3 = 8;
        if (num1.getmem() > num2.getmem()) {
            mem3 = num1.getmem();
            int* bin3 = new int[mem3];
            for (int i = 0; i < mem3 - 8; i++) {
                if (bin1[i] < bin2[i]) {
                    bin1[i + 1] -= 1;
                    bin1[i] += 2;
                    bin3[i] = bin1[i] - bin2[i];
                }
                else bin3[i] = bin1[i] - bin2[i];
            }
            for (int i = mem3 - 8; i < mem3; i++) {
                bin3[i] = bin1[i];
            }
     
            return Binary(bin3, mem3);
        }
     
        if (num1.getmem() < num2.getmem()) {
            mem3 = num2.getmem();
            int* bin3 = new int[mem3];
            for (int i = 0; i < mem3 - 8; i++) {
                if (bin1[i] < bin2[i]) {
                    bin1[i + 1] -= 1;
                    bin1[i] += 2;
                    bin3[i] = bin1[i] - bin2[i];
                }
                else bin3[i] = bin1[i] - bin2[i];
            }
            for (int i = mem3 - 8; i < mem3; i++) {
                bin3[i] = bin1[i];
            }
     
            return Binary(bin3, mem3);
        }
     
        if (num1.getmem() == num2.getmem()) {
            mem3 = num1.getmem();
            int* bin3 = new int[mem3];
            for (int i = 0; i < mem3; i++) {
                    if (bin1[i] < bin2[i]) {
                        bin1[i + 1] -= 1;
                        bin1[i] += 2;
                        bin3[i] = bin1[i] - bin2[i];
                    }
                    else bin3[i] = bin1[i] - bin2[i];
            }
            return Binary(bin3, mem3);
        }
        return Binary(0);
    }
     
    Binary operator*(Binary num1, Binary num2) {
        int* bin1 = num1.getbin();
        int* bin2 = num2.getbin();
        int mem1 = num1.getmem();
        int mem2 = num2.getmem();
        int mem3 = num1.getmem() + num2.getmem();
        if (mem3 > 32) {
            cout << "Максимального размера выделяемой памяти недостаточно для получения ответа. Операция прервана";
            return Binary(0);
        }
        int* bin3 = new int[mem3];
        for (int i = 0; i < mem3; i++) {
            bin3[i] = 0;
        }
     
        for (int i = 0; i < mem1; i++) {
            for (int j = 0; j < mem2; j++) {
                bin3[i + j] += bin1[i] * bin2[j];
                if (bin3[i + j] > 1) {
                    bin3[i + j] -= 2;
                    bin3[i + j + 1] += 1;
                }
            }
        }
     
        return Binary(bin3, mem3);
    }
     
    int main() {
        setlocale(LC_ALL, "Ru");
        int otv(1);
        int d1(0), d2(0), count(0);
        char zn1('+'), zn2('+'), zn3('+'); //переменные для хранения знаков. Знак 2 определяем действие между числами. Знаки 1 и 3 - знаки чисел
        string v;//строка, для считывания выражения
        string D1, D2; //строки, в которые запишем числа
        //while (otv == 1) {
            cout << "Введите выражение" << endl;
            getline(cin, v); //считываем введенное выражение в строку
            int length = v.length(); // определяем длину строки
            /////////////////////////////////////////////
            //1 ЭТАП: ОПРЕДЕЛЕНИЕ ЗНАКОВ В ВЫРАЖЕНИИ//
            count = 0; //зануляем счетчик кол-ва знаков в строке
            for (int i = 0; i < length; i++) {
                if (v[i] == '-' || v[i] == '+' || v[i] == '*') count++; //узнаем кол-во знаков в строке
            }
     
            int* pointer = new int[3];//в этот массив сохраним номера позиций знаков, чтобы разграничить и считать числа
            for (int i = 0; i < 3; i++) {
                pointer[i] = 0;
            }
            if (count == 1) { // если в строке только 1 знак
                zn1 = '+';
                zn3 = '+'; // то 1 и 3 знак - это +
                for (int i = 0; i < length; i++) {
                    if (v[i] == '-' || v[i] == '+' || v[i] == '*') {
                        zn2 = v[i]; //определяем знак 2
                        pointer[0] = i;
                    }
                }
                D1.assign(v, 0, pointer[0]);//сохраняем первое число в строку
                d1 = atoi(D1.c_str());//переводим строку в число
                D2.assign(v, pointer[0] + 1, length - pointer[0]);//по аналогии
                d2 = atoi(D2.c_str());
            }
     
     
            if (count == 2) { //если в строке  2 знака, то
                count = 0;
                if (v[0] == '-') {// если первый знак -, то далее ищем второй знак
                    zn1 = '-';
                    for (int i = 0; i < length; i++) {
                        if (v[i] == '-' || v[i] == '+' || v[i] == '*') {
                            zn2 = v[i];
                            pointer[0] = i;
                        }
                    }
                    zn3 = '+';
                    D1.assign(v, 1, pointer[0] - 1);//сохраняем первое число в строку
                    d1 = atoi(D1.c_str());//переводим строку в число
                    D2.assign(v, pointer[0] + 1, length - pointer[0]);//по аналогии
                    d2 = atoi(D2.c_str());
                }
                else { //иначе 
                    count = 0; //зануляем счетчик кол-ва знаков
                    for (int i = 0; i < length; i++) {
                        if (v[i] == '-' || v[i] == '+' || v[i] == '*') {
                            if (count == 1) {
                                zn3 = v[i];
                                count++;
                                pointer[1] = i;
                            }
                            if (count == 0) {
                                zn2 = v[i];
                                count++;
                                pointer[0] = i;
                            }
                        }
                    }
                    D1.assign(v, 0, pointer[0]);//сохраняем первое число в строку
                    d1 = atoi(D1.c_str());//переводим строку в число
                    D2.assign(v, pointer[1] + 1, length - pointer[1]);//по аналогии
                    d2 = atoi(D2.c_str());
                }
                count = 2;
            }
     
     
            if (count == 3) {//если в строке 3 знака, то сохраняем знаки поочередно 
                count = 0;
                for (int i = 0; i < length; i++) {
                    if (v[i] == '-' || v[i] == '+' || v[i] == '*') {
                        if (count == 2) {
                            zn3 = v[i];
                            count++;
                            pointer[2] = i;
                        }
                        if (count == 1) {
                            zn2 = v[i];
                            count++;
                            pointer[1] = i;
                        }
                        if (count == 0) {
                            zn1 = v[i];
                            count++;
                            pointer[0] = i;
                        }
                    }
                }
                D1.assign(v, pointer[0] + 1, pointer[1] - pointer[0] - 1);//сохраняем первое число в строку
                d1 = atoi(D1.c_str());//переводим строку в число
                D2.assign(v, pointer[2] + 1, length - pointer[2]);//по аналогии
                d2 = atoi(D2.c_str());
                count = 3;
            }
            /////////////////////
            //2 ЭТАП. ВЫЧИСЛЕНИЕ ВЫРАЖЕНИЯ//
            if (count == 1) {
                Binary bin1(d1), bin2(d2);
                //Binary bin3(bin1 + bin2), (bin1 - bin2)(bin1 - bin2), (bin2 * bin1)(bin1 * bin2), (bin2 - bin1)(bin2 - bin1);
                switch (zn2)
                {
                    case '+':
                        bin1.printbin(); cout << " + "; bin2.printbin(); cout << " = "; (bin1+bin2).printbin(); cout << endl;
                        bin1.printdec(); cout << " + "; bin2.printdec(); cout << " = "; (bin1 + bin2).printdec(); cout << endl;
                        break;
                    case '-':
                        if (bin1.getdec() < bin2.getdec()) {
                            bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = -"; (bin2 - bin1).printbin(); cout << endl;
                            bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = -"; (bin2 - bin1).printdec(); cout << endl;
                            break;
                        }
                        else {
                            bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = "; (bin1 - bin2).printbin(); cout << endl;
                            bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = "; (bin1 - bin2).printdec(); cout << endl;
                            break;
                        }
                    case '*': {
                        bin1.printbin(); cout << " * "; bin2.printbin(); cout << " = "; (bin2 * bin1).printbin(); cout << endl;
                        bin1.printdec(); cout << " * "; bin2.printdec(); cout << " = "; (bin2 * bin1).printdec(); cout << endl;
                        break;
                    }
                    default: cout << "Введен неверный знак. Попробуйте еще раз" << endl;
                        break;
                }
                
            }
            else {
                Binary bin1(d1), bin2(d2);
                //Binary bin3(bin1 + bin2), (bin1 - bin2)(bin1 - bin2), (bin2 * bin1)(bin1 * bin2), (bin2 - bin1)(bin2 - bin1);
                switch (zn2)
                {
                case '+':
                    if (zn1 == '+' && zn3 == '+') {
                        bin1.printbin(); cout << " + "; bin2.printbin(); cout << " = "; (bin1 + bin2).printbin(); cout << endl;
                        bin1.printdec(); cout << " + "; bin2.printdec(); cout << " = "; (bin1 + bin2).printdec(); cout << endl;
                        break;
                    }
                    if (zn1 == '-' && zn3 == '+') {
                        if (bin1.getdec() <= bin2.getdec()) {
                            cout << "-"; bin1.printbin(); cout << " + "; bin2.printbin(); cout << " = "; (bin2 - bin1).printbin(); cout << endl;
                            cout << "-"; bin1.printdec(); cout << " + "; bin2.printdec(); cout << " = "; (bin2 - bin1).printdec(); cout << endl;
                            break;
                        }
                        else {
                            cout << "-"; bin1.printbin(); cout << " + "; bin2.printbin(); cout << " = -"; (bin1 - bin2).printbin(); cout << endl;
                            cout << "-"; bin1.printdec(); cout << " + "; bin2.printdec(); cout << " = -"; (bin1 - bin2).printdec(); cout << endl;
                            break;
                        }
                    }
                    if (zn1 == '+' && zn3 == '-') {
                        if (bin1.getdec() < bin2.getdec()) {
                            bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = -"; (bin2 - bin1).printbin(); cout << endl;
                            bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = -"; (bin2 - bin1).printdec(); cout << endl;
                            break;
                        }
                        else {
                            bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = "; (bin1 - bin2).printbin(); cout << endl;
                            bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = "; (bin1 - bin2).printdec(); cout << endl;
                            break;
                        }
                    }
                    if (zn1 == '-' && zn3 == '-') {
                        cout << '-'; bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = -"; (bin1 + bin2).printbin(); cout << endl;
                        cout << '-'; bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = -"; (bin1 + bin2).printdec(); cout << endl;
                        break;
                    }
                case '-':
                    if (zn1 == '+' && zn3 == '+') {
                        if (bin1.getdec() < bin2.getdec()) {
                            bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = -"; (bin2 - bin1).printbin(); cout << endl;
                            bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = -"; (bin2 - bin1).printdec(); cout << endl;
                            break;
                        }
                        else {
                            bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = "; (bin1 - bin2).printbin(); cout << endl;
                            bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = "; (bin1 - bin2).printdec(); cout << endl;
                            break;
                        }
                    }
                    if (zn1 == '-' && zn3 == '+') {
                            bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = -"; (bin1 + bin2).printbin(); cout << endl;
                            bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = -"; (bin1 + bin2).printdec(); cout << endl;
                            break;
                            }
                    if (zn1 == '+' && zn3 == '-') {
                        bin1.printbin(); cout << " - "; bin2.printbin(); cout << " = "; (bin1 + bin2).printbin(); cout << endl;
                        bin1.printdec(); cout << " - "; bin2.printdec(); cout << " = "; (bin1 + bin2).printdec(); cout << endl;
                        break;
                    }
                    if (zn1 == '-' && zn3 == '-') {
                        if (bin1.getdec() <= bin2.getdec()) {
                            cout << "-"; bin1.printbin(); cout << " + "; bin2.printbin(); cout << " = "; (bin2 - bin1).printbin(); cout << endl;
                            cout << "-"; bin1.printdec(); cout << " + "; bin2.printdec(); cout << " = "; (bin2 - bin1).printdec(); cout << endl;
                            break;
                        }
                        else {
                            cout << "-"; bin1.printbin(); cout << " + "; bin2.printbin(); cout << " = -"; (bin1 - bin2).printbin(); cout << endl;
                            cout << "-"; bin1.printdec(); cout << " + "; bin2.printdec(); cout << " = -"; (bin1 - bin2).printdec(); cout << endl;
                            break;
                        }
                    }
                case '*':
                    if (zn1 == '+' && zn3 == '+') {
                        bin1.printbin(); cout << " * "; bin2.printbin(); cout << " = "; (bin2 * bin1).printbin(); cout << endl;
                        bin1.printdec(); cout << " * "; bin2.printdec(); cout << " = "; (bin2 * bin1).printdec(); cout << endl;
                        break;
                    }
                    if (zn1 == '-' && zn3 == '+') {
                        cout << "-"; bin1.printbin(); cout << " * "; bin2.printbin(); cout << " = -"; (bin2 * bin1).printbin(); cout << endl;
                        cout << "-"; bin1.printdec(); cout << " * "; bin2.printdec(); cout << " = -"; (bin2 * bin1).printdec(); cout << endl;
                        break;
                    }
                    if (zn1 == '+' && zn3 == '-') {
                        bin1.printbin(); cout << " * (-"; bin2.printbin(); cout << ") = -"; (bin2 * bin1).printbin(); cout << endl;
                        bin1.printdec(); cout << " * (-"; bin2.printdec(); cout << ") = -"; (bin2 * bin1).printdec(); cout << endl;
                        break;
                    }
                    if (zn1 == '-' && zn3 == '-') {
                        bin1.printbin(); cout << " * "; bin2.printbin(); cout << " = "; (bin2 * bin1).printbin(); cout << endl;
                        bin1.printdec(); cout << " * "; bin2.printdec(); cout << " = "; (bin2 * bin1).printdec(); cout << endl;
                        break;
                    }
                default: cout << "Введен неверный знак. Попробуйте еще раз" << endl;
                    break;
                }
            }
            
            //otv = 1;
        //}
            return 0;
    }

    0

    TheCalligrapher

    Вездепух

    Эксперт CЭксперт С++

    10836 / 5854 / 1588

    Регистрация: 18.10.2014

    Сообщений: 14,519

    31.01.2021, 00:54

    18

    Цитата
    Сообщение от Nikis0715
    Посмотреть сообщение

    Такие вот требования у преподавателя

    Да, но когда вы сделали

    C++
    1
    
    int mem3 = num1.getmem() + num2.getmem();

    в операторе умножения, вы не нарушили эти требования?

    0

    IT_Exp

    Эксперт

    87844 / 49110 / 22898

    Регистрация: 17.06.2006

    Сообщений: 92,604

    31.01.2021, 00:54

    Помогаю со студенческими работами здесь

    Выход из цикла for: требуется, чтобы программа завершила свою работу как только найдет первую единицу матрицы
    дана матрица A размера MxN, состоящая из нулей и единиц,
    Требуется, чтобы программа завершила свою…

    Программа завершает работу с непонятным кодом
    Чесnно говоря я понимаю от части почему программа в конце не выдает 0 , так как я не написал нигде…

    Посимвольная конкатенация строк, программа завершает работу с кодом 3
    Доброго времени суток. Программа крашится на 22 строке на 2-й итерации вложенного цикла, не…

    Как сделать, чтобы пока одна функция не завершила работу, другая бы не могла начаться?
    Здравствуйте, написал JS код, который анимирует две картинки, однако если запускать функцию…

    Программа вылетает с ошибкой Process returned -1073740940 (0xC0000374)
    Всем привет! Есть вот такое задание : &quot;Одномерный массив А, состоящий из N элементов, заполняется…

    Процесс завершил работу с кодом 0
    Здравствуйте,сейчас пишу текстовую игру для конкурса начинающих программистов.
    Пишу в консоли и…

    Искать еще темы с ответами

    Или воспользуйтесь поиском по форуму:

    18

    Используйте CUDA сегодня, чтобы добиться негативных эффектов изображения

    оглавление

    описание проблемы

    анализ проблемы

    1. Результат расчета необъективен.

    2. exited with code -1073740940 (0xc0000374)

    решение

    Резюме


    описание проблемы

    1. Результат расчета необъективен.

    2. exited with code -1073740940 (0xc0000374)


    анализ проблемы

    1. Результат расчета необъективен.

    cudaError_t supplementPix(uchar *c, const uchar *a, unsigned int size);
    
    __global__ void supplementKernel(int *c, const int *a)
    {
    	int i = threadIdx.x;
             c [i] = 255-a [i]; // Постоянное вычисление вызовет ошибки вычислений, например 255-1 = 253
    }

    результат операции

    Позже создайте объект cv :: Mat со всеми 255 и CV_8UC3 и извлеките массив данных как вычитаемое число.

    cv::Mat mask = cv::Mat(rows, cols, CV_8UC3, cv::Scalar::all(255));
    	// Постоянный расчет вызовет ошибки расчета, например 255-1 = 253
    	 // Необходимо использовать массив для передачи параметров
    const uchar* maskData = mask.data;

    Результат операции правильный:

    Но есть новые проблемы


    2. exited with code -1073740940 (0xc0000374)

    Найдите соответствующую информацию

    《Exit code -1073740940》(https://www.baidu.com/link?url=ud0ZNzh-8ZJmrpFojN8F2uxyOQXEBoeSAJvhiVsvsVuvfXca6U5Kup3UsaBMU-vo5gH_gBCAsqPdI6BpPXtp1F7fBaksS_RFgEFb1IMWs7fKHORjUTdTzm8FmA_uhYQK2q7zXj2R1MSszMqTc7wnAJABHZw-HItOL8AzVBUG39yO2NnvitqXRJWrrv3JohHh&wd=&eqid=95880f450000d468000000055e85a6e6)

    «VS сообщил об ошибке, что wntdll.pdb не был загружен, ntdll.dll0xC0000374: куча повреждена» (https://blog.csdn.net/luoye2333/article/details/89087530)

    Начать отладку

    После отладки было обнаружено, что ошибка памяти возникла после вызова метода CUDA, который вызывал ошибку, когда объект был уничтожен в конце программы.

    Проверить функцию вызова CUDA

    cudaError_t supplementPix(uchar *c, const uchar *a, const uchar *b, unsigned int size){
        cudaStatus = cudaMalloc((void**)&dev_c, size * sizeof(int));
        cudaStatus = cudaMalloc((void**)&dev_a, size * sizeof(int));
        cudaStatus = cudaMalloc((void**)&dev_b, size * sizeof(int));
        cudaStatus = cudaMemcpy(dev_a, a, size * sizeof(int), cudaMemcpyHostToDevice);
        cudaStatus = cudaMemcpy(dev_b, b, size * sizeof(int), cudaMemcpyHostToDevice);
        cudaStatus = cudaMemcpy(c, dev_c, size * sizeof(int), cudaMemcpyDeviceToHost);
    }

    Обнаружено, что при изменении кода шаблона int было изменено на uchar, а sizeof (int) было изменено.


    решение

    После модификации результат операции (успех)



    Резюме

    Когда возвращаемое значение программы выходит с кодом -1073740940 и ошибка отладки указывает 0xc0000374, что куча ntdll.dll повреждена, это означает, что это утечка памяти.

    Особенно это приводит к ошибкам, когда объект уничтожается (т.е. release ()) в конце программы.


    Ошибки, связанные с лицензией

    Ошибка 0

    Невозможно зарегистрировать лицензию через Мастер регистрации с помощью лицензионного кода, нужен ключевой файл. Проблема актуальна для ПК под управлением Windows XP.

    Решение:

    Из-за ограничений Windows XP активация лицензии непосредственно через Мастер регистрации антивируса в настоящее время невозможна. Пройдите по ссылке Регистрация серийного номера, зарегистрируйте лицензию и подтвердите отправку ключевого файла на ваш электронный адрес. После регистрации на указанный вами при первой регистрации адрес придет электронное письмо с ключевым файлом, который и нужно будет указать в Мастере регистрации антивируса.

    Если у вас еще не установлен Dr.Web версии 11.5, настоятельно рекомендуем скачать с нашего сайта ее дистрибутив и установить в системе вместо устаревшей версии.

    Операционная система Windows XP катастрофически устарела. В ней имеются незакрытые уязвимости, через которые легко могут проникать новые вредоносные программы, еще не попавшие в базы антивирусов. Компания Microsoft с апреля 2014 года полностью прекратила поддержку Windows XP. Это означает, что для данной системы практически полностью прекращен выпуск обновлений, исправляющих обнаруживаемые в системе уязвимости, так что обеспечить надежную защиту этой ОС сегодня практически невозможно.

    Для работы в интернете (особенно если на компьютере ведется работа с банковскими или платежными системами) настоятельно рекомендуем использовать компьютеры с более современными и более безопасными версиями Windows или перевести работу с интернетом и платежными системами на ПК под управлением Linux или macOS. Если же по какой-то причине необходимо использование именно Windows XP, нужно обязательно установить в системе все выпущенные для нее обновления, а также соответствующими техническими средствами ограничить доступ с этого компьютера в интернет только необходимыми для работы сайтами.

    Ошибки 2, 5, 9, 13, 22, 38, 62, 71, 90, 125, 999-1018, 1900

    Ошибка при взаимодействии с сервисом.

    Решение:

    Попробуйте повторить попытку позже или обратитесь в службу технической поддержки, приложив к запросу отчет утилиты DwSysInfo.

    Как создать отчет SysInfo?

    Ошибка 12

    Лицензия заблокирована.

    Чаще всего ошибка возникает по следующим причинам:

    1. Лицензия не активирована.

      Решение:

      Активируйте новую лицензию в Менеджере лицензий Dr.Web и удалите из него истекшую (или заблокированную) лицензию. В списке лицензий должна остаться только одна, действующая лицензия.

    2. После переустановки антивируса он активируется старой, уже продленной лицензией.

      Решение:

      Если вы приобрели продление лицензии, то она автоматически блокируется, а оставшийся срок ее действия прибавляется к сроку действия новой лицензии. То есть при попытке активировать антивирус старой лицензией возникает ошибка. Укажите новую лицензию при регистрации антивируса или укажите новую лицензию в качестве основной в Менеджере лицензий.

    3. Лицензия была использована ранее на другом ПК. Такое случается, когда по ошибке было приобретено продление на 1 ПК на 2 года при необходимости защитить 2 ПК.

      Решение:

      Обратитесь в службу технической поддержки с запросом на разделение лицензии. К запросу приложите документы, подтверждающие, что вы являетесь владельцем лицензии.

      Внимание! После разделения лицензии (2 года /1 ПК) она будет заблокирована, а взамен вы получите две новых лицензии (2 ПК / 1 год).

    Ошибка 13

    В Менеджере лицензий Dr.Web нет ни одной действующей лицензии.

    Решение:

    Зарегистрируйте новую лицензию в Менеджере лицензий Dr.Web.

    Ошибка 105

    С ошибкой могут столкнуться пользователи демолицензий. Cистемный хэш не совпадает с системным хэшем, с которым проводилась первичная активация (попытка использовать серийный номер демо на еще одном компьютере или после смены ОС).

    Две основных причины:

    1. Демонстрационный период, соответствующий указанному серийному номеру, уже активирован на другом компьютере. Использование демоключа на двух ПК является нарушением условий использования демо.

      Решение:

      • Если другому вашему компьютеру нужна защита Dr.Web, запросите демо с него.
      • Если на таком компьютере вы уже использовали право на одно демо в течение одного года, чтобы ваш компьютер не оставался без защиты Dr.Web, рекомендуем приобрести лицензию Dr.Web.
    2. Обновление ОС Windows. При этом ошибка чаще всего возникает на Windows 10 после установки очередного крупного обновления.

      Решение:

      Нужно заново оформить демонстрационный серийный номер на нашем сайте и активировать его.

      Особенно часто ошибка возникает на Windows 10, так как к ней часто выходят обновления, меняющие номер версии, отчего антивирус перестает «узнавать» систему, но хэш ПК сохраняется, и повторно зарегистрировать лицензию нельзя.

    Ошибка 400

    Превышено количество попыток активации серийного номера.

    Решение:

    Активируйте серийный номер с помощью ключевого файла или отправьте письменную заявку в службу технической поддержки.

    Ошибка 401

    В качестве основания для продления указана уже продленная лицензия.

    Решение:

    Продлить лицензию можно только один раз, так что при попытке повторно указать ее сервер вернет ошибку 401. При следующем продлении указывать следует ту актуальную лицензию, с помощью которой продлевали предыдущую.

    Для коробочных продуктов с двумя лицензиями:

    Вторая лицензия в этом случае должна регистрироваться как новая, без бонуса за продление.

    Ошибка 402

    В качестве основания для продления указана заблокированная лицензия.

    Решение:

    Отправьте письменную заявку в службу технической поддержки.

    Ошибка 404

    Ошибка при вводе серийного номера. Её можно увидеть как в Менеджере лицензий, так и на официальном сайте.

    Решение:

    Проверьте правильность ввода серийного номера и соответствующего ему регистрационного e-mail. Попробуйте повторить попытку ввода чуть позже.

    При необходимости отправьте письменную заявку в службу технической поддержки.

    Ошибка 405

    Неверный метод запроса.

    Решение:

    Отправьте письменную заявку в службу технической поддержки.

    Ошибка 406

    При продлении: предоставленные данные не совпадают с продлеваемым продуктом.

    Решение:

    Убедитесь в правильности введенного адреса e-mail (опечатки, ошибки в домене почты и т. д.). При необходимости отправьте письменную заявку в службу технической поддержки.

    Ошибка 410

    В качестве основания для продления была указана ещё не зарегистрированная лицензия.

    Решение:

    Зарегистрируйте лицензию, которую планируете продлевать.

    a

    Ошибка 415

    В качестве основания для продления была указана ранее продлённая лицензия.

    Решение:

    Продлить лицензию можно только один раз. При следующем продлении указывать следует ту актуальную лицензию, с помощью которой продлевали предыдущую.

    Ошибка 452

    Невозможно обновить вирусные базы на Агентах при использовании Dr.Web Enterprise Security Suite. Проявляется после обновления лицензии — старая блокируется, а оставшееся время добавляется к новой лицензии. Но если новая лицензия не была распространена на станции, то Агенты на них не будут обновляться.

    Решение:

    Распространить действие новой лицензии на все станции Антивирусной сети.

    Ошибки 500 — 501

    Внутренняя ошибка сервера.

    Решение:

    Отправьте письменную заявку в службу технической поддержки.

    Ошибка 592

    Для демоверсий: с момента получения предыдущего демо прошло менее года.

    Решение:

    Чтобы ваш компьютер не оставался без защиты Dr.Web, рекомендуем приобрести лицензию Dr.Web.

    Ошибка 607, 614

    Ключ-приложение как основание для продления или получения демо неверен.

    Решение:

    Отправьте письменную заявку в службу технической поддержки.

    Ошибка 615

    В качестве основания для продления указана заблокированная лицензия.

    Решение:

    Отправьте письменную заявку в службу технической поддержки.

    Ошибка 616

    Серийный номер не соответствует продукту. Возникает, например, при попытке продлить лицензию на Антивирус Dr.Web для Linux с указанием ключевого файла от Dr.Web Mobile Security.

    Решение:

    Зарегистрируйте серийный номер через наш сайт, после чего на указанный e-mail будет отправлен лицензионный ключевой файл (drweb32.zip).

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

    Подробнее об активации с помощью ключевого файла можно прочитать в документации.

    Ошибка 617, 618

    В качестве основания для продления использована лицензия сроком менее 3 месяцев.

    Решение:

    Продлеваемая лицензия должна иметь период действия более 3 месяцев.

    Ошибка 619

    Число объектов продлеваемой лицензии не совпадает с числом объектов новой лицензии.

    Решение:

    Для продукта Dr.Web Enterprise Security Suite лицензия продления со скидкой предоставляется на число защищаемых объектов, не превышающее число защищаемых объектов, указанное в прежней (продлеваемой) лицензии. С общими условиями продления со скидкой можно ознакомиться по ссылке.

    Ошибка 620

    Ключ-приложение как основание для продления или получения демо неверен.

    Решение:

    Отправьте письменную заявку в службу технической поддержки.

    Ошибка 621

    Неверно введен серийный номер.

    Решение:

    Обратите внимание, что серийный номер необходимо вводить, используя заглавные буквы и знак «-» для разделения полей ключа.

    Ошибка 623

    Недопустимый адрес e-mail.

    Решение:

    Проверьте вводимый адрес на предмет опечаток. При необходимости отправьте письменную заявку в службу технической поддержки.

    Ошибка 625

    Два возможных варианта:

    1. Непредвиденная ошибка взаимодействия с лицензионным сервером.

      Решение:

      Отправьте письменную заявку в службу технической поддержки.

    2. В качестве основания для продления указана уже продленная лицензия.

      Решение:

      Продлить лицензию можно только один раз. При следующем продлении указывать следует ту актуальную лицензию, с помощью которой продлевали предыдущую.

    Ошибка 626

    Прикладываемая (в качестве основания для продления / получения бонуса) лицензия несовместима с продлеваемым продуктом.

    Решение:

    Отправьте письменную заявку в службу технической поддержки.

    Ошибка 1403

    Ошибка возникает в процессе приобретения продления, если в качестве основания указан номер уже продленной лицензии.

    Решение:

    Убедитесь, что используете в качестве основания для продления текущий серийный номер.

    Ошибка 1404

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

    Решение:

    Чтобы активировать Dr.Web, используйте новый серийный номер, который вы получили после оплаты продления.

    Если вы не можете найти свой серийный номер, воспользуйтесь сервисом его восстановления.

    Ошибка 1405

    Срок действия ключевого файла по указанному серийному номеру истек.

    Решение:

    Используйте актуальный серийный номер, если он у вас есть. В противном случае продлите истекшую лицензию или приобретите новую.

    Ошибки >12000

    Ошибки Microsoft Windows HTTP (WinHTTP). Возможно, неполадки с сетью, неправильная настройка сетевых соединений, неверные параметры прокси сервера.

    Решение:

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

    Как создать отчет SysInfo?

    Коды и описание ошибок для продуктов Dr.Web под Windows

    Ошибки при установке

    Семейство продуктов для Windows (Dr.Web Home Security Suite / Dr.Web Security Space), KATANA

    Ошибка 1

    Ошибка активации серийного номера через приложение.

    Решение:

    Попробуйте использовать ключевой файл вместо серийного номера.

    Ключевой файл можно найти во вложении к письму о регистрации лицензии, его также можно получить по ссылке, использовав действующий серийный номер.

    Если ошибка сохраняется, обратитесь в службу технической поддержки, приложив к запросу отчет утилиты DwSysInfo.

    Как создать отчет SysInfo?

    Ошибка 11

    Не получилось отключить режим самозащиты.

    Решение:

    Убедитесь, что используется релизная версия инсталлятора (один из способов получить релизную версию — через Мастер скачиваний).

    Если ошибка сохраняется, проведите проверку жесткого диска на наличие ошибок с помощью утилиты chkdsk:

    1. Вызовите командную строку от имени администратора. Для этого откройте Пуск → Все программы — Стандартные, нажмите правой кнопкой мыши на Командную строку. В открывшемся меню выберите Запуск от имени администратора.
    2. Для проверки диска C:/ выполните следующую команду:
      chkdsk C: /F /R
      Утилита предложит осуществить проверку диска C:/ при следующей загрузке компьютера. Согласитесь и перезагрузите компьютер. При загрузке начнется проверка диска. Отменять ее не нужно, необходимо дождаться окончания проверки.

    Если ошибка сохраняется, обратитесь в службу технической поддержки, приложив к запросу отчет утилиты DwSysInfo.

    Как создать отчет SysInfo?

    Ошибка 13

    Не получилось включить режим самозащиты.

    Решение:

    Обратитесь в службу технической поддержки, приложив к запросу отчет утилиты DwSysInfo.

    Как создать отчет SysInfo?

    Ошибка 16

    Установка и работа антивируса невозможна.

    Одна из вероятных причин — установке и работе антивируса препятствуют сторонние программы, наличие в системе других антивирусов или их следов после неудачной попытки удаления, вирусная активность.

    Решение:

    1. Если в системе есть папка C:\ProgramData\Doctor Web, удалите ее.
      (Как включить отображение скрытых и системных файлов?)

      1. Откройте поисковую строку Windows через меню Пуск или сочетанием клавиш Win+S.
      2. Введите в поисковой строке «Параметры папок» и откройте этот раздел.
      3. Откройте вкладку Вид. В разделе Дополнительные параметры установите флажок Показывать скрытые файлы, папки и диски, снимите флажок Скрывать защищенные системные файлы, затем нажмите ОК.
    2. Проверьте наличие других установленных антивирусов в системе. Сторонний антивирус следует удалить штатными средствами Windows или соответствующей утилитой удаления. Если удаление завершается ошибкой, обратитесь в службу поддержки того антивируса, который вы использовали.
    3. Используйте бесплатную утилиту Dr.Web CureIt!, чтобы исключить влияние вирусов, блокирующих установку антивируса. Повторите попытку установки.
    4. Настройте запуск системы в режиме чистой загрузки, чтобы исключить влияние различного ПО на работу системы, следуя рекомендациям Microsoft. Для этого:
      1. На вкладках Службы и Автозагрузка снимите флажки со всех элементов, кроме Microsoft.
      2. Перезагрузите компьютер.
      3. После запуска системы в режиме чистой загрузки попробуйте установить антивирус еще раз.

    Если ошибка сохраняется, обратитесь в службу технической поддержки, приложив к запросу отчет утилиты DwSysInfo.

    Как создать отчет SysInfo?

    Ошибка 32

    Возникает при критических повреждениях, когда завершить установку или восстановить продукт по каким-то причинам уже невозможно.

    Решение:

    Исключите возможные проблемы с диском, на котором проводится установка, с помощью утилиты chkdsk:

    1. Вызовите командную строку от имени администратора. Для этого откройте Пуск → Все программы — Стандартные, нажмите правой кнопкой мыши на Командную строку. В открывшемся меню выберите Запуск от имени администратора.
    2. Для проверки диска C:/ выполните следующую команду:
      chkdsk C: /F /R
      Утилита предложит осуществить проверку диска C:/ при следующей загрузке компьютера. Согласитесь и перезагрузите компьютер. При загрузке начнется проверка диска. Отменять ее не нужно, необходимо дождаться окончания проверки.

    Если антивирус присутствует в списке установленных приложений, выполните полное удаление антивируса штатными средствами системы. Если удаление не прошло, скачайте и запустите утилиту экстренного удаления. Перезагрузите компьютер и повторите установку.

    Если ошибка сохраняется, обратитесь в службу технической поддержки, приложив к запросу отчет утилиты DwSysInfo.

    Как создать отчет SysInfo?

    Ошибка службы BFE при установке

    Для функционирования некоторых компонентов программы Dr.Web необходимо наличие запущенной службы базового модуля фильтрации (BFE). В случае если данная служба отсутствует или повреждена, установка Dr.Web будет невозможна. Повреждение или отсутствие службы BFE может указывать на наличие угроз безопасности вашего компьютера.

    Если попытка установки программы Dr.Web завершилась с ошибкой службы BFE, выполните следующие действия:

    1. Просканируйте систему при помощи лечащей утилиты CureIt! от компании «Доктор Веб». Скачать утилиту вы можете на сайте.
    2. Восстановите службу BFE. Для этого вы можете воспользоваться утилитой для устранения проблем в работе брандмауэра от компании Microsoft (для операционных систем Windows 7 и выше).
    3. Запустите Мастер установки Dr.Web и произведите установку согласно штатной процедуре, приведенной выше.

    Если ошибка сохраняется, обратитесь в службу технической поддержки, приложив к запросу отчет утилиты DwSysInfo.

    Как создать отчет SysInfo?

    Корпоративные продукты (Dr.Web Enterprise Security Suite) — ошибки при установке Агента

    Ошибка 140

    Не получилось распаковать репозиторий в каталог %ProgramData%\Doctor Web\Updater\repo.

    Возможные причины: следы предыдущих установок продукта и/или отсутствие прав на запись в директорию. Также к появлению ошибки могут привести проблемы непосредственно с дистрибутивом.

    Решение:

    1. Проверьте, существует ли в системе каталог C:\ProgramData\Doctor Web (каталог ProgramData по умолчанию является скрытым).
    2. Если каталог существует:
      • проверьте, нет ли ограничений на запись для ProgramData и Doctor Web;
      • проверьте, не менялся ли владелец каталога;
      • попробуйте удалить каталог C:\ProgramData\Doctor Web.
    3. Если проблема сохраняется, запустите утилиту удаления Dr.Web для Windows.
    4. После перезагрузки ОС попробуйте повторить установку.
    5. При повторении проблемы попробуйте заново загрузить дистрибутив и повторить установку.

    Обратите внимание: установке также может препятствовать стороннее ПО.

    Если установка по-прежнему завершается ошибкой, обратитесь в службу технической поддержки, приложив к запросу отчет утилиты DwSysInfo.

    Как создать отчет SysInfo?

    Ошибка 142

    Не получилось записать значение InstallId в ветку HKLM\SOFTWARE\Doctor Web\Settings\Es

    Возможная причина: установке мешают следы модуля самозащиты в системе.

    Решение:

    1. Скачайте и запустите утилиту удаления Dr.Web для Windows.
    2. Повторите попытку установки.
    3. Если ошибка сохраняется и/или запустить утилиту удаления не удается, обратитесь в службу технической поддержки, приложив к запросу отчет утилиты DwSysInfo.

    Как создать отчет SysInfo?

    Ошибки 144, 146

    В подкаталогах репозитория отсутствует файл drwupsrv.exe.lzma нужной версии и разрядности (либо он не был загружен в случае установки по сети, либо не был распакован из дистрибутива).

    Возможные причины: ошибки на жестком диске или нестабильное подключение к сети.

    Решение:

    1. Проведите проверку жесткого диска на наличие ошибок с помощью штатной утилиты chkdsk.
      • Откройте Пуск → Все программы → Стандартные. Щелкните правой кнопкой мыши пункт Командная строка и выберите Запуск от имени Администратора.
      • Для проверки тома C: введите следующую команду:
        chkdsk C: /F /R
      • При этом утилита предложит осуществить проверку диска «C:» при следующей загрузке. Согласитесь и перезагрузите ПК.
      • Дождитесь окончания проверки и загрузки ОС.
    2. Скачайте и запустите утилиту удаления Dr.Web для Windows. После завершения ее работы перезагрузите компьютер.
    3. Повторите попытку установки антивируса.

    Вы также можете использовать для установки полный инсталляционный пакет Агента.

    Если ошибка сохраняется, обратитесь в службу технической поддержки, приложив к запросу отчет утилиты SysInfo.

    Как создать отчет SysInfo?

    Ошибки 150, 156

    Не получилось записать изменения по адресу HKLM\SOFTWARE\Doctor Web\InstalledComponents

    Возможная причина: установке мешают следы приложения Dr.Web, установленного в системе ранее.

    Решение:

    1. Скачайте и запустите утилиту удаления Dr.Web для Windows.
    2. Повторите попытку установки.
    3. Если ошибка сохраняется и/или применить утилиту не удается, обратитесь в службу технической поддержки, приложив к запросу отчет утилиты SysInfo.

    Как создать отчет SysInfo?

    Ошибка 162

    Не удалось прочитать открытый ключ (drwcsd.pub).

    Решение:

    1. Убедитесь, что используется релизная версия инсталлятора. В частности, проверьте актуальность репозитория по инструкции, по необходимости выполните обновление и повторите загрузку инсталлятора.
    2. Скопируйте файл drwcsd-certificate.pem (сертификат) или drwcsd.pub (открытый ключ) из каталога C:\Program Files\DrWeb Server\webmin\install в каталог, где лежит инсталлятор Агента Dr.Web.
    3. Попробуйте повторить установку, указав в качества адреса сервера его IP-адрес, а на запрос сертификата — сохранённый сертификат.

    Если ошибка сохраняется, обратитесь в службу технической поддержки, приложив к запросу отчет утилиты SysInfo.

    Как создать отчет SysInfo?

    Ошибки 900, 902

    Во время выполнения RunUpdaterAction произошла неизвестная ошибка.

    Возможная причина: наличие в системе следов приложения Dr.Web.

    Решение:

    1. Запустите утилиту удаления Dr.Web для Windows.
    2. Выполните перезагрузку ОС по требованию.
    3. Если ошибка сохраняется, проведите проверку жесткого диска на наличие ошибок с помощью утилиты chkdsk.
      • Для проверки тома C: выполните команду:
        chkdsk C: /F /R
      • Введите команду в окне командной строки Windows (нажмите сочетание клавиш Win+R → введите cmd → нажмите ОК) и нажмите Enter.
      • При этом утилита предложит осуществить проверку диска «C:» при следующей загрузке. Согласитесь и перезагрузите ПК.
      • Дождитесь окончания проверки и загрузки ОС.
      • Перезагрузите ПК, перед запуском ОС начнется тестирование диска.

    Если ошибка сохраняется, обратитесь в службу технической поддержки, приложив к запросу отчет утилиты SysInfo.

    Как создать отчет SysInfo?

    Ошибка в работе антивируса после завершения установки

    Установка завершается успешно, на иконке Dr.Web появляется желтый треугольник с восклицательным знаком. При наведении на значок можно увидеть текст «Ошибка» (после основной информации), в ленте уведомлений появится сообщение о сбое компонентов и предложение перезагрузить ПК.

    Возможная причина: повреждены компоненты Агента.

    Решение:

    Проверьте актуальность репозитория на Сервере по инструкции, затем дождитесь получения Агентом ревизий. Если версии ревизий и там, и там актуальны — выполните восстановление антивируса штатными средствами ОС.

    1. Откройте Пуск → Панель управления → Программы и компоненты (аналогичный путь для вашей версии Windows) → выберите Dr.Web, нажмите сверху Изменить → Восстановить программу.
    2. После окончания восстановления перезагрузите ПК и проверьте работу обновления Dr.Web.
      Если ошибка сохраняется, проведите проверку жесткого диска на наличие ошибок с помощью утилиты chkdsk.
    3. Для проверки тома C: выполните команду:
      chkdsk C: /F /R
    4. Введите команду в окне командной строки Windows (нажмите сочетание клавиш Win+R → введите cmd → нажмите ОК) и нажмите Enter.
    5. При этом утилита предложит осуществить проверку диска «C:» при следующей загрузке. Согласитесь и перезагрузите ПК.
    6. Дождитесь окончания проверки и загрузки ОС.
    7. Перезагрузите ПК, перед запуском ОС начнется тестирование диска.

    Если ошибка сохраняется, обратитесь в службу технической поддержки, приложив к запросу отчет утилиты SysInfo.

    Как создать отчет

    Корпоративные продукты (Dr.Web Enterprise Security Suite) — ошибки при установке Сервера

    Ошибка 36

    Не удалось обновить структуру базы данных до новой версии.

    Решение:

    Установка сервера с внутренней базой данных по умолчанию

    1. Установите Сервер Dr.Web с внутренней базой данных по умолчанию.
    2. Если установка прошла успешно, подключите вместо внутренней базы данных имеющуюся внешнюю.

    Импорт базы данных внутренними средствами Сервера

    1. Сделайте экспорт базы данных при остановленном Сервере (подробнее про экспорт базы данных).
    2. Установите новый Сервер с чистой базой данных.
    3. После установки остановите работу Сервера.
    4. Импорт базы данных с обновлением структуры производится следующей командой:
      drwcsd modexecdb database-import-and-upgrade <файл экспорта базы данных>

    Если установка по-прежнему завершается ошибкой, обратитесь в службу технической поддержки, приложив к запросу отчет утилиты DwSysInfo.

    Как создать отчет SysInfo?

    Ошибка 40

    Текст ошибки: «Не удалось инициализировать или очистить базу данных»

    Возможные причины: база данных уже инициализирована (существует) или же внешняя база данных отсутствует/недоступна.

    Решение:

    Установка сервера с внутренней базой данных по умолчанию

    1. Установите Сервер Dr.Web с внутренней базой данных по умолчанию.
    2. Если установка прошла успешно, подключите вместо внутренней базы данных имеющуюся внешнюю.

    Установка сервера с чистой внешней базой данных

    Создайте или очистите уже созданную базу данных средствами СУБД. Руководство по подключению, а также по подготовке и настройке базы данных можно найти в документации. В процессе установки укажите параметры подключения к базе данных. Ее инициализация произойдет в процессе установки.

    Убедитесь, что используется поддерживаемая версия СУБД. Если используется ODBC-драйвер — убедитесь, что установлена его свежая версия.

    Пользователь, которым планируется подключаться к СУБД, должен быть ее владельцем.

    Если новая база данных создается в СУБД Microsoft SQL — необходимо указать сортировку с учетом регистра (суффикс _CS) и с учетом диакритических знаков (суффикс _AS).

    Если установка по-прежнему завершается ошибкой, обратитесь в службу технической поддержки, приложив к запросу отчет утилиты DwSysInfo.

    Как создать отчет

    Ошибки при обновлении

    Ошибка 2

    Может возникать по различным причинам.

    Решение:

    1. Проверьте доступность сети.
    2. Проведите проверку жесткого диска на наличие ошибок с помощью утилиты chkdsk:
      1. Вызовите командную строку. Для этого нужно нажать сочетание клавиш Win+R → ввести cmd → нажать ОК
      2. Для проверки диска C:/ выполните следующую команду:
        chkdsk C: /F /R
        Утилита предложит осуществить проверку диска C:/ при следующей загрузке компьютера. Согласитесь и перезагрузите компьютер. При загрузке начнется проверка диска. Отменять ее не нужно, необходимо дождаться окончания проверки.
    3. Выполните восстановление антивируса. Откройте Пуск → Панель управления → Программы и компоненты (аналогичный путь для вашей версии Windows) → выберите Dr.Web, нажмите сверху Изменить → Восстановить программу.
      После окончания восстановления перезагрузите компьютер и проверьте работу обновления Dr.Web.
    4. Если ошибка возникла при обновлении по зеркалу — убедитесь что папка обновлений доступна.
    5. Если ошибка обновления сохранится, нажмите на значок Dr.Web справа внизу → Центр безопасности → значок замка слева снизу→ значок шестеренки справа сверху → Общие → Дополнительные настройки → Журнал → Изменить. Установите флажок Обновление Dr.Web, нажмите ОК. Закройте настройки, повторите попытку обновления. После появления ошибки сформируйте отчет, выбрав Поддержка → Перейти к мастеру отчетов → Создать отчет.

    После этого обратитесь в службу технической поддержки, приложив к запросу созданный отчет. Затем аналогичным образом отключите ведение подробного отчета для модуля обновления (уберите флажок Обновление Dr.Web).

    Ошибка 4

    Может возникать по различным причинам.

    Решение:

    1. Откройте меню Dr.Web, выберите пункт Лицензия. Убедитесь, что используется активная лицензия. Если в списке присутствуют записи о других лицензиях, кроме активной, удалите их.
    2. В некоторых случаях придется выполнить восстановление приложения штатными средствами. Для этого:
      1. Откройте Панель управления → раздел Программы или Программы и компоненты.
      2. Выберите из списка установленных программ антивирус Dr.Web, в верхней части открытого окна нажмите кнопку Изменить. В открывшемся окне выберите вариант Восстановить программу.
    3. После завершения процедуры восстановления перезагрузите компьютер и повторно проверьте работу обновлений.
    4. Если ошибка 4 найдена в логах — причина в переданном неверном параметре для апдейтера.

    Если ошибка сохраняется, обратитесь в службу технической поддержки, приложив к запросу отчет утилиты DwSysInfo.

    Как создать отчет SysInfo?

    Ошибка 7

    Обновление уже запущено (т.е. ошибку провоцирует повторный запуск). Может возникать по различным причинам.

    Решение:

    1. Подождите несколько минут — этого должно хватить для завершения обновления.
    2. Проведите проверку жесткого диска на наличие ошибок с помощью утилиты chkdsk:
      1. Вызовите командную строку. Для этого нужно нажать сочетание клавиш Win+R → ввести cmd → нажать ОК
      2. Для проверки диска C:/ выполните следующую команду:
        chkdsk C: /F /R
        Утилита предложит осуществить проверку диска C:/ при следующей загрузке компьютера. Согласитесь и перезагрузите компьютер. При загрузке начнется проверка диска. Отменять ее не нужно, необходимо дождаться окончания проверки.
    3. Выполните восстановление антивируса. Откройте Пуск → Панель управления → Программы и компоненты (путь указан для ОС Windows 7 и выше. Путь к разделу в более ранних версиях Windows выглядит иначе) → выберите Dr.Web, нажмите сверху Изменить → Восстановить программу. После окончания восстановления перезагрузите компьютер и проверьте работу обновления Dr.Web.

    Если установлена свежая версия антивируса, восстановление диска и антивируса проведено, но ошибка обновления сохраняется, то нажмите на значок Dr.Web справа внизу → Центр безопасности → значок замка → значок шестеренки → Общие → Дополнительные настройки → Журнал → Изменить. Установите флажок Обновление Dr.Web, нажмите ОК. Закройте настройки, повторите попытку обновления. После появления ошибки сформируйте отчет, выбрав Поддержка → Перейти к мастеру отчетов → Создать отчет.

    После этого обратитесь в службу технической поддержки, приложив к запросу созданный отчет. Затем аналогичным образом отключите ведение подробного отчета для модуля обновления (уберите флажок Обновление Dr.Web).

    Ошибка 8

    Нет обновлений для текущих продуктов или компонентов. Не является ошибкой.

    Ошибка 9

    Невозможно подключиться к серверам обновления.

    Решение:

    Проверьте подключение к Интернету — без него обновление всегда будет завершаться ошибкой 9.

    Если подключение к Интернету работает корректно, но ошибка сохраняется — обратитесь в службу технической поддержки, приложив к запросу отчет утилиты DwSysInfo.

    Как создать отчет SysInfo?

    Ошибка 10

    Ошибка целостности репозитория.

    Решение:

    Если ошибка возникает в процессе получения обновлений через зеркало обновлений, пожалуйста, изучите общие рекомендации по его настройке.

    Если проблема не решена, обратитесь в службу технической поддержки, приложив к запросу отчет утилиты DwSysInfo.

    Как создать отчет SysInfo?

    Ошибка 11

    Не получилось отключить самозащиту (если в системе уже установлен модуль Самозащиты).

    Ошибка может быть вызвана рядом причин:

    1. Используется устаревшая версия антивируса. Чаще всего встречается, если по ошибке была установлена старая версия продуктов Dr.Web или была попытка выполнить обновление на системах, где оно не проводилось в течение долгого времени.
      Решение: удалите старую версию антивируса и установите актуальную, скачав ее по ссылке.
    2. Файлы обновления повреждены (из-за проблем с диском или системного сбоя при обновлении).

      Решение: проверьте и исправьте ошибки диска, проведите процедуру восстановления антивируса:

      1. Проведите проверку жесткого диска на наличие ошибок с помощью утилиты chkdsk:
        • Вызовите командную строку. Для этого нужно нажать сочетание клавиш Win+R → ввести cmd → нажать ОК
          Для проверки диска C:/ выполните следующую команду:
          chkdsk C: /F /R
          Утилита предложит осуществить проверку диска C:/ при следующей загрузке компьютера. Согласитесь и перезагрузите компьютер. При загрузке начнется проверка диска. Отменять ее не нужно, необходимо дождаться окончания проверки.
      2. Выполните восстановление антивируса. Откройте Пуск → Панель управления → Программы и компоненты (аналогичный путь для вашей версии Windows) → выберите Dr.Web, нажмите сверху Изменить → Восстановить программу.
        После окончания восстановления перезагрузите компьютер и проверьте работу обновления Dr.Web.

    Если установлена свежая версия антивируса, восстановление диска и антивируса проведено, но ошибка обновления сохраняется, то нажмите на значок Dr.Web справа внизу → Центр безопасности → значок замка → значок шестеренки → Общие → Дополнительные настройки → Журнал → Изменить. Установите флажок Обновление Dr.Web, нажмите ОК. Закройте настройки, повторите попытку обновления. После появления ошибки сформируйте отчет, выбрав Поддержка → Перейти к мастеру отчетов → Создать отчет.

    После этого обратитесь в службу технической поддержки, приложив к запросу созданный отчет. Затем аналогичным образом отключите ведение подробного отчета для модуля обновления (уберите флажок Обновление Dr.Web).

    Ошибка 12

    Лицензия заблокирована на сервере. Вероятно, в Менеджере лицензий в качестве текущей лицензии указана уже истекшая или заблокированная (по причине продления, замены, разбивки или слияния) лицензия.

    Решение:

    1. Зарегистрируйте новую лицензию в Менеджере лицензий.
    2. Удалите истекшую (или заблокированную) лицензию из Менеджера лицензий. В списке лицензий должна остаться только одна действующая лицензия.
    Ошибка 13

    Отсутствие лицензии. В Менеджере лицензий нет ни одной действующей лицензии.

    Решение:

    Зарегистрируйте новую лицензию Dr.Web.

    Ошибка 15

    Продукт не поддерживается.

    Решение:

    Сроки поддержки продуктов Dr.Web обозначены на официальном сайте. Для более подробного ответа и/или для помощи с установкой поддерживаемого продукта оформите письменный запрос в службу технической поддержки.

    Ошибка 16

    Лицензия не найдена в базе на сервере (ключевой файл поврежден) либо попытка обновления происходит с истекшей лицензией.

    Решение:

    Найдите письмо с ключевым файлом, который был выслан на ваш регистрационный e-mail.

    1. Сохраните приложенный к этому письму архив с ключевым файлом на жесткий диск вашего компьютера.
    2. Разархивируйте его, щелкнув по архиву правой кнопкой мыши и выбрав пункт Извлечь всё.
    3. Укажите папку, в которую необходимо поместить ключевой файл (например, на Рабочий стол).
    4. Щелкните по значку антивируса в области уведомлений и перейдите на вкладку Лицензия. Нажмите на замок, чтобы перейти в административный режим (если у вас установлен пароль, необходимо его ввести). Нажмите Купить или активировать новую лицензию. В открывшемся окне введите серийный номер новой лицензии и нажмите Активировать либо нажмите на или укажите ключевой файл и укажите путь к сохраненному ранее ключевому файлу.

    Если причина в лицензии с истекшим сроком действия — следует заменить лицензию на действующую и повторить попытку обновления.

    Если ошибка сохраняется — пожалуйста, оформите письменный запрос в службу технической поддержки, приложив к запросу отчет утилиты Sysinfo.

    Как создать отчет SysInfo?

    Ошибка 17

    Зона обновления не пригодна (разные версии).

    Решение:

    Обратитесь в службу технической поддержки, приложив к запросу отчет утилиты DwSysInfo.

    Как создать отчет SysInfo?

    Ошибка 31

    Используется ключ, предназначенный для тестирования продукта (не коммерческий). При этом у пользователя установлен коммерческий продукт.

    Решение:

    1. Зарегистрируйте новую лицензию в Менеджере лицензий.
    2. Удалите предыдущую (тестовую) лицензию из Менеджера лицензий. В списке лицензий должна остаться только одна действующая лицензия.

    Коды и описание ошибок для продуктов Dr.Web под Linux

    Коды ошибок и описание к ним можно найти в актуальной документации к Dr.Web Home Security Suite / Dr.Web Enterprise Security Suite / Dr.Web Desktop Security Suite / Dr.Web Security Space (для Linux).

    Общие рекомендации по идентификации ошибок

    • Для уточнения места и причины возникновения ошибки ознакомьтесь с содержимым журнала Dr.Web для Linux (по умолчанию он находится в файле /var/log/syslog или /var/log/messages, в зависимости от используемой ОС). Также вы можете воспользоваться командой drweb-ctl log.
    • Для облегчения идентификации ошибки рекомендуется настроить вывод журнала в отдельный файл и разрешить вывод расширенной отладочной информации. Для этого выполните следующие команды:
      • # drweb-ctl cfset Root.Log <путь к файлу журнала>
      • # drweb-ctl cfset Root.DefaultLogLevel DEBUG
    • Для возврата настроек ведения журнала по умолчанию выполните следующие команды:
      • # drweb-ctl cfset Root.Log -r
      • # drweb-ctl cfset Root.DefaultLogLevel -r

    Коды и описание ошибок для Dr.Web для почтовых серверов UNIX

    Коды ошибок и описание к ним можно найти в актуальной документации к Dr.Web Enterprise Security Suite / Dr.Web Mail Security Suite (для UNIX).

    Общие рекомендации по идентификации ошибок

    • Для уточнения места и причины возникновения ошибки ознакомьтесь с содержимым журнала Dr.Web для почтовых серверов UNIX (по умолчанию он находится в файле /var/log/syslog или /var/log/messages, в зависимости от используемой ОС). Также вы можете воспользоваться командой drweb-ctl log.
    • Для облегчения идентификации ошибки рекомендуется настроить вывод журнала в отдельный файл и разрешить вывод расширенной отладочной информации. Для этого выполните следующие команды:
      • drweb-ctl cfset Root.Log <путь к файлу журнала>
      • drweb-ctl cfset Root.DefaultLogLevel DEBUG
    • Для возврата настроек ведения журнала по умолчанию выполните следующие команды:
      • drweb-ctl cfset Root.Log -r
      • drweb-ctl cfset Root.DefaultLogLevel -r

    Большое спасибо заранее за надежные полезные мысли …. Кажется, у этого есть что-то. Теперь я понимаю, что проблема, вероятно, только незначительно связана с установкой с установщиком.


    Алло,

    Я уверен, что это не новичок, а идея? Независимо от того, что я делаю вместо этого, он принял скорость combi после длительного перезапуска x, все без успеха. Как вы думаете, на стороне производителя … при необходимости в режиме совместимости Lasco

    Поэтому он, вероятно, имеет какое-то отношение к сканеру, потому что ошибка произошла, когда я хотел обновить Outlook.

    Проблема в том, что я установщик, но что? Твен и драйвер WIA я не могу выдержать, несмотря на то, что сейчас почти 40 часов. Приветствие — больше не доступны. Кто-нибудь должен установить, если не предлагается драйвер Windows 10!

    14393, калькулятор представляет собой ноутбук Satellite C 70 A. Система WIN 10 stand 1607 / test только после ручного ввода USB-порта, сканера нет. Пробовал компьютер определяет, что 100 больше не может устанавливать сканер. Все попытки с помощью антивирусного сканера и Malwarebytes проверяются без находок.

    У меня есть некоторые подсказки для других инструментов обслуживания пользователей и т. Д.

    Понравилась статья? Поделить с друзьями:
  • Код ошибки 109 ростелеком
  • Код ошибки 1053 рутокен
  • Код ошибки 1072896763
  • Код ошибки 1055
  • Код ошибки 109 симс 4 пиратка