字符串编组和内存管理

问题描述

假设我在库中导出了以下 C++ 函数:

void foo(const wchar_t* text);

和使用该函数的 C# 代码:

[DllImport("bla.dll")]
static extern void foo([MarshalAs(UnmanagedType.LPWStr)] string text);

void Bar()
{
    string s = "hello";
    foo(s);
}
  1. .net 编组器在我调用 foo 时是否复制字符串或指针是否指向 s 的缓冲区?
  2. 如果值被复制,什么时候清理?
  3. 我必须自己清理它吗(大概在 foo 内)?
  4. 如果是这样,我该如何清理内存?

如果 text 被编组为:

  1. UnmanagedType.LPWStr
  2. UnmanagedType.BStr

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)