【问题标题】:Unsafe code and fixed statements with StringBuilder使用 StringBuilder 的不安全代码和固定语句
【发布时间】:2009-12-07 09:37:20
【问题描述】:

我想知道如何将 String 或 StringBuilder 传递给通过参数输出字符串的 C 函数。我在

中找到了一个很好的答案

Calling unmanaged function from C#: should I pass StringBuilder or use unsafe code?

但我有一个疑问。任何人都可以向我解释为什么垃圾收集器在导入函数执行期间不重新定位(托管)StringBuilder 实例?

【问题讨论】:

    标签: c# marshalling stringbuilder unsafe fixed


    【解决方案1】:

    有关使用 COM 和 P/Invoke 时如何编组字符串和 StringBuilder 的详细信息,请参阅 Default Marshaling for Strings。它没有明确说明 为什么 使用模式是安全的,但确实表明支持使用字符串和 StringBuilder 进行 P/Invoke 和预期行为。我怀疑编组系统在外部调用期间负责固定缓冲区,防止 GC 重新定位它。

    【讨论】:

      猜你喜欢
      • 2010-09-10
      • 1970-01-01
      • 2014-01-22
      • 1970-01-01
      • 2022-04-14
      • 1970-01-01
      • 2011-04-16
      • 1970-01-01
      • 2010-10-12
      相关资源
      最近更新 更多