[英]Unsafe code and fixed statements with StringBuilder
我想知道如何将String或StringBuilder传递给按参数输出字符串的C函数。 我找到了一个很好的答案
从C#调用非托管函数:我应该传递StringBuilder还是使用不安全的代码?
但是我有一个疑问。 任何人都可以向我解释为什么垃圾收集器在导入的函数执行过程中不重定位(托管的)StringBuilder实例?
有关使用COM和P / Invoke时如何对string和StringBuilder进行封送的详细信息,请参见对字符串的默认封送处理 。 它没有明确说明使用模式为何安全的原因,但确实表明支持和预期的行为是将string和StringBuilder用于P / Invoke。 我怀疑编组系统会在外部调用期间固定缓冲区,以防止GC重新定位。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.