我需要傳遞一個字節數組到memset,由於P/Invoke clunkiness需要IntPtr。手工測試,它可行,但我正在尋求理論上的確認。這種方法是否正確?作爲IntPtr通過PInvoke傳遞給memset
[DllImport("msvcrt.dll", EntryPoint = "memset", CallingConvention = CallingConvention.Cdecl, SetLastError = false)]
public static extern IntPtr MemSet(IntPtr dest, int c, int count);
static unsafe void ZeroMemset (byte[] data)
{
fixed (byte* bytes = data) {
MemSet ((IntPtr)bytes, 0, data.Length);
}
}
沒有「塊狀」。你的錯誤並不是以邏輯方式宣佈* dest *參數。它應該是'byte []'。通過聲明第二個參數以及正常的方式來移除額外的塊,'byte'。非粗壯的拼貼編組負責照顧其他所有內容。 –
我的意思是笨拙,是一個錯誤。抱歉。 – ArekBulski
@Hans第二個參數是'int':'void * memset(void * dest,int c,size_t count);' –