第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Marshal.Copy 拋出 ArgumentOutOfRangeException

Marshal.Copy 拋出 ArgumentOutOfRangeException

C#
回首憶惘然 2023-07-09 17:10:57
我正在嘗試將數(shù)據(jù)從 C# 應用程序中的托管內存編組到非托管內存位置,以供專有 DLL 使用。該值是一個浮點型,但 DLL 需要一個指向浮點型的指針。在構造函數(shù)中,我的想法是將非托管內存分配給指針,然后將傳入的浮點值復制到非托管內存。internal class MyInternalClass{    private static float[] fltArry;    public struct MY_DLL_STRUCT    {        public IntPtr fltPtr;        public MY_DLL_STRUCT(float flt)        {            MyInternalClass.fltArry = new float[] { flt };            this.fltPtr = Marshal.AllocHGlobal(sizeof(float) * MyInternalClass.fltArry.Length);            Marshal.Copy(MyInternalClass.fltArry, 0, this.fltPtr, sizeof(float) * MyInternalClass.fltArry.Length);        }    }}這些大小對我來說看起來不錯,但是每當Marshal.Copy調用該函數(shù)時ArgumentOutOfRangeException就會拋出一個異常。有任何想法嗎?
查看完整描述

1 回答

?
溫溫醬

TA貢獻1752條經(jīng)驗 獲得超4個贊

最后一個參數(shù)Marshal.Copy是要復制的元素數(shù)。

我懷疑你應該使用1(或MyInternalClass.fltArry.Length) 而不是sizeof(float) * MyInternalClass.fltArry.Length。您傳遞的值太大,因此:

例外情況

ArgumentOutOfRangeException - startIndex 和長度無效。


查看完整回答
反對 回復 2023-07-09
  • 1 回答
  • 0 關注
  • 255 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號