Нарушение прав доступа в Log4cplus при использовании глобального Logger

Так что все довольно просто.

Посмотри на это:

#include <log4cplus/logger.h>
#include <iostream>

log4cPlus::Logger name;

int main(int argc, char* argv[]) {    
    int p;
    cin >> p;
    return 0;
}

Вы можете запустить его двумя способами:

  1. Запустите его, введите номер и нажмите ввод.
  2. Запустите его, но нажмите красный крестик в углу cmd, чтобы закрыть окно команд.

Теперь, если вы выполнили это, используя версию библиотеки (log4cplus.lib) в конфигурации выпуска, результаты были такими же, ничего не произошло, что не должно было произойти.

Однако, если вы запустили это, используя отладочную версию библиотеки (log4cplusD.lib) в конфигурации отладки, результаты были другими. При первом запуске все работало нормально. На втором, однако, была выдана ошибка:

0xC0000005: Access violation reading location 0xFFFFFFFFFFFFFFFF

Чтобы восстановить его, VS2017 требуется около 30 секунд, так что это довольно раздражает.

Почему это происходит?

0 ответов

Другие вопросы по тегам