Обнаружение нескольких связанных C времени выполнения на окнах - PullRequest
1 голос
/ 07 июня 2009

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

1 Ответ

3 голосов
/ 07 июня 2009

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

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

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

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

...