MSDN.WhiteKnight - Stack Overflow answers
Ответ на "c++ что означают данные строки?"
Answer 968662
Данный фрагмент преобразует управляемую строку .NET в массив широких символов С++ и размещает его в динамической памяти. При этом он содержит потенциальную проблему: память под завершающий нуль-символ не выделяется, поэтому такой массив не будет корректно обработан многими функциями стандартной библиотеки для работы со строками (это может и не быть проблемой в конкретном коде, но помнить об этом полезно).
В C# обычно нет необходимости в таком преобразовании в явном виде, так как String имеет метод ToCharArray для преобразования в массив символов, а при вызове нативных функций маршаллер P/Invoke умеет автоматически преобразовывать объекты string (или StringBuilder) в неуправляемые строки. Близким аналогом является метод Marshal.StringToHGlobalUni, но он выделяет память под нуль-символ. Совсем буквальный перевод будет выглядеть как-то так:
IntPtr data = Marshal.AllocHGlobal(source.Length); Marshal.Copy(source.ToCharArray(), 0, data, source.Length);
Content is retrieved from StackExchange API.
Auto-generated by ruso-archive tools.