Основным недостатком процесса является обеспечение правильной обработки управляемых / собственных взаимодействий.
1)
Код c ++, вероятно, будет зависеть от детерминированного уничтожения для очистки / освобождения ресурсов и т. Д. Я говорю, вероятно, потому что это распространенная и хорошая практика в c ++.
В управляемом коде это означает, что вы должны быть осторожны, чтобы правильно утилизировать код оболочки C ++ Cli. Если ваш код используется один раз, то для вас это сделает предложение using в c #. Если объект должен прожить какое-то время в качестве члена, вы обнаружите, что удаление должно быть приковано цепочкой на всем протяжении вашего приложения.
2)
Другая проблема зависит от того, насколько голодно ваше приложение. Управляемый сборщик мусора может быть ленивым. Гарантируется, что для управляемого распределения требуется больше места, чем доступно. Однако неуправляемый распределитель никак не связан. Поэтому вам необходимо вручную сообщить управляемому распределителю, что вы будете делать неуправляемые выделения и что он должен сохранять это пространство доступным. Это делается с помощью метода AddMemoryPressure.
Основными недостатками выхода из процесса являются:
1) Скорость.
2) Кодовые издержки для управления связью.
3) Издержки кода для наблюдения за тем или иным процессом, умирающим, когда это не ожидается.