Я работаю над интеграцией rLog с нашей базой кода и замечаю проблему в Windows, которой у меня нет в linux. В заголовочном файле у меня есть статическая переменная, которая дает мне «подробный» канал ведения журнала (в основном один из отладочных), определенный таким образом:
static RLogChannel *rlog_verbose = DEF_CHANNEL("verbose", Log_Debug);
В Linux нет проблем с этим, но в Windows я получаю сообщение об ошибке, как только приложение запускается.
Я отследил это до этой строки в библиотеке rLog:
RLogChannel *rlog::GetComponentChannel(const char *component, const char* path, LogLevel levl) {
...
if(!gRootChannel)
gRootChannel = new RLogChannel( "", level );
...
}
Проблема в том, что при вызове new возвращается указатель NULL, который не проверяется
и программа быстро падает, когда к ней обращаются. Существуют ли правила, связанные с распределением памяти в глобальном контексте в Windows, от которых я не отказался?
Редактировать: Я почти уверен, что это должно быть связано с порядком инициализации статических объектов. Я хотел быть уверен, что я не пропустил что-то очевидное в отношении распределения памяти в Windows. Спасибо всем!