Строка 'fast-pass' не управляет временем жизни своей строки - она просто создает оболочку вокруг любой базовой строки, которую вы ей даете.Эта обертка очень легкая.
Это означает 2 вещи - во-первых, вам не нужно удалять HSTRING
(так как он не владеет базовой строкой), но что более важно, вы должны поддерживать базовую строку живойи не изменяется во время использования строки быстрого прохода.
Так что это полезно, если у вас уже есть строка (скажем, const char * в разделе родата, или из другого источника, чье время жизни строго больше, чемвремя жизни HSTRING).Но это всего лишь оптимизация, чтобы избежать копирования.
МОЯ рекомендация - если вы заботитесь только о времени жизни и правильно освободите строку, когда закончите, - это использовать класс Microsoft::WRL::Wrapper::HString
, который обеспечиваетхорошая оболочка RAII в стиле C ++ вокруг raw HSTRING
и будет правильно освобождать их, когда закончите.Затем, используя функции-члены Detach
, Get
, GetAddressOf
и т. Д., Вы можете взаимодействовать с другими API-интерфейсами, которые ожидают raw HSTRING
s.
Если вы все равно заботитесь о скорости, всегда есть *Класс 1018 *, который дублирует функциональность WindowsCreateStringReference
, но опять же с красивым объектом CII RAII.