|
1
9
从可用的源代码(Rotor)判断,System.String(Char*)构造函数通过CtorCharPtr()使用高度优化的代码路径,它使用FastAllocateString()分配字符串。McSal.ptrtoString()遵循完全不同的代码路径,它是用C++编写的,并且看起来是复制两次字符串,而没有“快速分配器”的好处。 显然,不是同一个程序员在做这个。几乎可以肯定,甚至不是同一个团队,因为代码适合不同的编程模型。最接近的共同管理者可能是四级以上。 不确定这会有什么帮助,请使用快速的。意外事件会在Windows上产生类似的异常。 |
|
|
2
8
第二个是不符合CLS的,需要不安全的代码,可能有不确定的行为,这就是为什么它可能更快的原因。还有一个需要 pin 指向非托管地址或垃圾收集器的指针可能会重新分配该地址,从而导致代码更加混乱。除非您确定这是应用程序的瓶颈,否则您可能希望使用 PtrToStringUni 功能。 |