繁体   English   中英

如何在C#中实现malloc操作

[英]How to implement malloc operation in C#

float **ThreadID;
int Nthreads;

如何在C#中执行以下任务?

ThreadID = (float **)malloc( Nthreads* sizeof(float *) );

您的应用程序是否需要非托管内存? 否则正常的做法是

ThreadID = new float*[Nthreads];

这将为您分配一个新阵列。 如果在一个被调用的函数中使用这种语句,则可能需要添加stackalloc-keyword。 否则慢速垃圾收集可能导致内存消耗增加。 使用stackalloc,它将存储在堆栈中,并在离开函数时作为任何其他局部变量销毁。

ThreadID = stackalloc float*[Nthreads];

编辑:与C#中的所有指针一样,您需要声明函数的不安全上下文,例如

unsafe int doSomething(){
   ...
}

你可以试试

Marshal.AllocHGlobal 

你有msdn的详细信息

http://msdn.microsoft.com/fr-fr/library/system.runtime.interopservices.marshal.allochglobal.aspx

float[][] ThreadId;
int NThreads;

ThreadId = new float[Nthreads][];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM