Тут задался теоритеческим вопросом, какова судьба переменной в С++ коде когда память для нее выделялась CoTaskMemAlloc
?
Схема примерно такая:
C++ выделяем память переменной через CoTaskMemAlloc, отдаем переменную в C# управляемый код.
В C# коде, переменная описана как возвращаемая с наружи:
[return: MarshalAs(UnmanagedType.LPWStr)]
.
Далее, уборщик мусора в C# теоретически должен освободить память этой переменной, когда решит что она более не нужна, но когда он это сделает (и сделает ли) не очевидно.
Так вот в чем вопрос, как в C++ коде понять, освобождена ли память присвоенная этой переменной или ещё нет? Null ей явно присвоен не будет, если я правильно понимаю..
И как я догадываюсь вызывать "возможно вторично" CoTaskMemFree
из C++ кода не безопасно.
К сожалению про логику работы связки CoTaskMemAlloc/CoTaskMemFree
в разных ситуациях на msdn написано чуть меньше чем ничего..
Виртуальный выделенный сервер (VDS) становится отличным выбором
Вопрос по Photon Unity Networking 2:
В общем появился вопрос что лучше использовать для десериализации json Jsonnet или DataContractJsonSerializer в С#
Есть список директорий (просто строки), которые необходимо отсортироватьНапример: C:\Program Files\Microsoft C:\Program Files (x86) C:\Program Files