Это большая сделка, когда вы используете DLL в своем приложении. очень важно, чтобы EXE и DLL использовали один и тот же распределитель памяти. В случае, если вы возвращаете указатели или объекты C ++ (например, std :: string) из функции DLL, которая должна быть освобождена вызывающей стороной. Чтобы получить один и тот же распределитель, все модули должны использовать один и тот же экземпляр CRT. Вы получите это, только если вы скомпилируете с / MD, чтобы выбрать версию DLL CRT. И все они должны использовать одну и ту же версию CRT. В любом случае, использование / MT очень трудно диагностировать утечки памяти - нарушение доступа, если вам повезет.
Использование / MT упрощает развертывание приложения, поскольку вам не нужно устанавливать библиотеки DLL времени выполнения. Подразумевается, что это безопасно сделать, только если вам нужно только развернуть EXE. Или когда вы очень тщательно контролируете публичный интерфейс ваших DLL. Например, COM-сервер, совместимый с автоматизацией, может ссылаться на статическую версию CRT. Автоматизация имеет строгие правила обмена указателями и управления памятью.