[問題] byte陣列轉指標問題

看板C_Sharp作者 (蝶戀月)時間8年前 (2016/02/02 14:32), 編輯推噓1(107)
留言8則, 2人參與, 最新討論串1/1
目前在練習指標的用法 有一個地方卡住了,想請問各位的解法 一開始定義了 public unsafe gdi32.BITMAPINFO* m_pBmpInfo; 然後在練習的程式中C++裡面是這樣寫 m_pBmpInfo = (BITMAPINFO*)new BYTE[(sizeof(BITMAPINFOHEADER)+256*sizeof(RGBQUAD))]; 請問可不可以教我該如何去做相同的事情呢 ? 最近在學習 C# 請各位鞭小力點 QAQ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.61.64.62 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1454394764.A.4E0.html

02/03 08:00, , 1F
如果你是剛從C來C#的,第一件事要習慣沒指標可用
02/03 08:00, 1F

02/03 08:02, , 2F
不是做不到,而是在C#裡面不應該把直接指標當常態
02/03 08:02, 2F

02/03 08:05, , 3F
至於怎麼用...那得先請問你要做什麼呢?看你的code是想用
02/03 08:05, 3F

02/03 08:07, , 4F
gdi32的pinvoke,那通常是用IntPtr。不過在C#更常直接用
02/03 08:07, 4F

02/03 08:08, , 5F
Bitmap類
02/03 08:08, 5F

02/03 22:48, , 6F
使用Marshal.AllocXXX配置記憶體,使用完用對應方法釋放
02/03 22:48, 6F

02/03 22:48, , 7F
,或著用GCHandle.Alloc Pinned住,使用完釋放。再者...
02/03 22:48, 7F

02/03 22:48, , 8F
可以直接用P/Invoke Call對應方法。
02/03 22:48, 8F
文章代碼(AID): #1Mi4sCJW (C_Sharp)