本文介绍了gcroot在c ++ / cli的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

gcroot是什么意思?

gcroot是一个C ++ / cli模板类,它简化了C ++ / cli中的托管类型,



您可以例如具有以下内容:

  class Native {
public:
Native(Object ^ obj):
netstring(obj-> ToString()){//初始化gcroot< String ^>
}
〜Native(){
}
void Print(){
array< Char> ^ chars = netstring-> GetChars(); // Dereferencing the gcroot< String ^>
_wprintf(netstring is:);
if(chars-> Length> 0){
pin_ptr< Char> charptr =&(chars [0]);
_wprintf(%s,(wchar_t const *)charptr);
}
}
private:
gcroot< String ^>网络
};

gcroot充当对托管对象或值类型实例的引用,并且正在进行复制时的所有工作对象或值类型实例。
通常你需要使用GCHandle和.NET框架的一些C函数。这些都封装在gcroot中。


What does gcroot mean? I found it in code I am reading.

解决方案

gcroot is a C++/cli template class that eases holding managed types in C++/cli classes.

You can for example have the following:

class Native {
  public:
    Native(Object ^obj) :
      netstring(obj->ToString()) { // Initializing the gcroot<String ^>
    }
    ~Native() {
    }
    void Print() {
      array<Char> ^chars = netstring->GetChars(); // Dereferencing the gcroot<String ^>
      _wprintf("netstring is:");
      if (chars->Length > 0) {
        pin_ptr<Char> charptr = &(chars[0]);
        _wprintf("%s", (wchar_t const *)charptr);
      }
    }
  private:
    gcroot<String ^> netstring;
};

gcroot acts as a reference to the managed object or value type instance and is doing all the work when copying the object or value type instance.Normally you need to work with GCHandle and some C functions of the .NET framework. This is all encapsulated in gcroot.

这篇关于gcroot在c ++ / cli的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-20 12:01