当前位置:编程学习 > C#/ASP.NET >>

(高手请进)关于BSTR类型

在COM中一属性:
BSTR CGrgXFSCashAcceptorCtrl::GetTest() 
{
CString strResult = "TEST";
return strResult.AllocSysString();
}

1.在C#中是否需要释放内存????
2.如需要释放,怎么释放?(有没如SysFreeString的东东?)

3.如不需要释放. 在C#中启一线程,在线程中:
   while (true)
   {
         string str = GetTest();
         System.Threading.Thread.Sleep(1);
   }

  内存会一直增加.
  疑问:是否增加到一定程度系统会自行释放???


--------------------编程问答-------------------- 使用 .NET 的 COM 包装器生成代码。 --------------------编程问答-------------------- caozhy 谢谢你的回复.

使用 .NET 的 COM 包装器生成代码。

能详细点么?具体怎么弄? --------------------编程问答-------------------- C#可以自动释放的是托管资源。非托管资源不能自动释放。
AllocSysString需要用函数FreeSysString手动释放
http://msdn.microsoft.com/en-us/library/za1865s1(v=vs.71).aspx --------------------编程问答-------------------- ynb119 谢谢你的回复

C#可以自动释放的是托管资源。非托管资源不能自动释放。
AllocSysString需要用函数FreeSysString手动释放

你的意思是需要在C#中手动释放
请问C#中有没有FreeSysString这样的东东,如何使用? --------------------编程问答--------------------

    System.Runtime.InteropServices.Marshal.FreeBSTR 
--------------------编程问答-------------------- Marshal.FreeBSTR(p);
Marshal.FreeHGlobal(p);

在哪个函数(或类)中申请的就在那个函数(或类)中释放
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,