use*_*275 5 c# memory-management
float **ThreadID;
int Nthreads;
Run Code Online (Sandbox Code Playgroud)
如何在C#中执行以下任务?
ThreadID = (float **)malloc( Nthreads* sizeof(float *) );
Run Code Online (Sandbox Code Playgroud)
你可以试试
Marshal.AllocHGlobal
Run Code Online (Sandbox Code Playgroud)
您在 msdn 上有详细信息
http://msdn.microsoft.com/fr-fr/library/system.runtime.interopservices.marshal.allochglobal.aspx
您的应用程序需要非托管内存有什么原因吗?否则通常的做法是
ThreadID = new float*[Nthreads];
Run Code Online (Sandbox Code Playgroud)
这将为您分配一个新的数组。如果您在一个被大量调用的函数中使用这种语句,您可能需要添加 stackalloc-keyword。否则缓慢的垃圾收集可能会导致内存消耗增加。使用 stackalloc 它将被存储在堆栈中,并在离开函数时作为任何其他局部变量被销毁。
ThreadID = stackalloc float*[Nthreads];
Run Code Online (Sandbox Code Playgroud)
编辑:与 C# 中的所有指针一样,您需要为函数声明不安全的上下文,例如
unsafe int doSomething(){
...
}
Run Code Online (Sandbox Code Playgroud)