Я хочу использовать библиотечную функцию, которая принимает строку UTF16-LE в качестве параметра (const char16_t* str, size_t length)
.Параметр length
необходимо указывать только для строк, которые не заканчиваются нулем.Функция скопирует строку и будет работать с ней.
. Строки .Net хранятся в памяти как UTF16 - предполагая, что они хранятся в кодировке с прямым порядком байтов, нужно иметь возможность закрепить строку, получить внутреннююнаведите указатель на эту функцию библиотеки и предоставьте ее без дополнительной копии, поскольку библиотека все равно ее скопирует.
Возможно ли это, и при каких обстоятельствах это будет стоить повышения производительности (закрепление объекта небесплатно, я полагаю)?
(Это внутренний цикл приложения, которое в основном копирует тонны строк из A в B, и эта копирующая часть является текущим узким местом, поэтому имеет смысл ускорить этовверх).
Редактировать Этот вопрос является почти дубликатом, поэтому я временно удалил его.Но это не совсем дубликат этого другого вопроса, который спрашивает о доступе к данным как const wchar_t*
, тогда как мне нужно const char16_t*
.