Вопрос

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

Я подумываю конкретно о вызове fopen и fclose в разных dll, но мне также хотелось бы знать, что это безопасно для других ресурсов (указателей памяти, дескрипторов и т. д.).

Я думаю, пока все скомпилировано с одними и теми же переключателями, все должно работать.

Спасибо, Кори

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

Решение

Это Плохо(TM) для всех проектов, кроме нетривиальных.Это работает при очень строгом наборе условий, таких как версия DLL, модель потоков, распределители памяти, используемые в каждом из них, и множество других.Наконец, ошибки будет слишком трудно преследовать.

Другие советы

Если вы используете версию DLL библиотеки времени выполнения C (/MD или /MDd), тогда да, это безопасно.

Если вы статически связываете CRT с DLL (/MT или /MTd), то нет, это небезопасно.

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