Обнаружение многосвязанной среды выполнения C в Windows

StackOverflow https://stackoverflow.com/questions/961337

  •  12-09-2019
  •  | 
  •  

Вопрос

У меня возникли некоторые проблемы с одним из проектов, над которыми я работаю в Windows (64-разрядная версия).Программа иногда выходит из строя, иногда нет, и я подозреваю, что проблема связана с многосвязной средой выполнения C.Как я могу обнаружить это в Windows?Я попытался с помощью depends.exe, но он не сообщил о CRT

Это было полезно?

Решение

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

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

Я бы заподозрил, что ваша проблема в любом случае в другом месте, поскольку библиотеки DLL с API уровня C, как правило, не должны полагаться на общее состояние в CRTL - чаще всего распределителе памяти - и должны использовать стандартизированный протокол для управления памятью через API, такой как выделение вызывающего абонента, использование вызываемого абонента или передача обратных вызовов выделения памяти и т.д.Другими словами, несколько CRTLS в одном процессе обычно не являются проблемой из-за правильного использования протокола управления памятью.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top