c#中指针转换成数组
c++下dll有一个接口,参数是BYTE*类型的,传入的一帧帧图像数据,我在c#中用intptr类型接收后我想转换成byte[]类型数组,查找资料发现可以使用marshal中copy函数,将intptr内容拷贝到byte[]中,可是如果我不想使用这个copy函数,想像c++下一样直接用intptr指向的那块地址操作数据怎么办?
我自己的思路是:
(1)在c#下将intptr参数改成byte[]去接收c++下的BYTE*指针,发现接收到的只是一个指针值,并不能转换成数组,也就是说我不能对传进来的这个byte[]进行操作,不然直接报“受保护的内存被读写”这样的错误。
(2)在c#下还是用intptr去接收,然后使用topointer()方法,用void*data = intptr.Topointer();这样得到void*值,再转换成byte*,这样就可以像c++一样操作数据块,可是这段c#下操作指针又是不安全的,所以也放弃了。
跪求各位大大,请问有什么方法可以直接操作c++转过来的指针数据,或是可以将intptr转换成byte[]数组的方法。