簡體   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