String 系统::字符串到char*并返回到C++/CLI:比封送员快?

String 系统::字符串到char*并返回到C++/CLI:比封送员快?,string,c++-cli,char,String,C++ Cli,Char,在C++/CLI项目(Visual Studio 2010)中,将System::String转换为char*以便将其发送到系统函数,并将收到的char*转换为System::String的最佳方法是什么 有没有比使用System::Runtime::InteropServices::Marshal类更快的方法?char*或wchar\t*常量还是否?如果您真正需要的是一个常量wchar\u t*,那么您可以使用vcclr.h快速完成它,这不会引起任何复制意外(但是您仍然需要锁定结果) 如果换一

在C++/CLI项目(Visual Studio 2010)中,将System::String转换为char*以便将其发送到系统函数,并将收到的char*转换为System::String的最佳方法是什么


有没有比使用System::Runtime::InteropServices::Marshal类更快的方法?

char*
wchar\t*
<代码>常量还是否?如果您真正需要的是一个
常量wchar\u t*
,那么您可以使用vcclr.h快速完成它,这不会引起任何复制意外(但是您仍然需要锁定结果)


如果换一种方式,您可能无法显著地击败
封送
系统::字符串
确实有接受指针的构造函数。

它只是一个字符*。如果我固定字符串,这不会对内存管理产生负面影响吗?是的,但是您需要在系统功能期间固定它,否则GC可能会将其从您的下方移出。如果它是一个
char*
字符,那么无论如何你都得做一些复制。仅供参考,我能解开它吗?在执行离开固定指针的上下文后,它是否会取消固定?如果使用
pin_ptr
它是固定的,则正确。当
pin_ptr
超出范围时,它会被解除锁定。否。这将导致未定义的行为。您需要将unicode字符串转换为实字符*(除非此函数将数据作为一个字节包进行操作,并且不将其视为实际字符串)。功能是什么(如果有助于共享)?