如何将一个指针转换为一个数组?不能存在内存复制
把一个数组转换为指针很容易做到,那么有如何将一个指针转换为一个数组?不能存在内存复制,会损失性能。 --------------------编程问答-------------------- shengao --------------------编程问答-------------------- C#本来就没有指针...还不允许内存复制...搞笑的? --------------------编程问答-------------------- 恐怕不大可能。 --------------------编程问答-------------------- 数组转换到指针是可以。反向好像真的不大可能。 --------------------编程问答-------------------- mark --------------------编程问答-------------------- …… --------------------编程问答-------------------- 如果是int[] ,float[] , double[] ,等应该容易得到Marshal.Copy
--------------------编程问答-------------------- 楼上...内存复制已被禁止...明显是砸场子的... --------------------编程问答-------------------- MARK! --------------------编程问答-------------------- 嗯。我认为要实现这个肯定要复制,因为这个要从非托管内存到托管内存。Array肯定要在托管内存中。 --------------------编程问答-------------------- 把一个数组转换为指针很容易做到
真的吗?
数组是在托管堆上的,且随着垃圾回收不断变换地址,指针指堆栈可以称得上容易,指托管堆就谈不上容易了,因为要加 fixed() 固定数组,使用指针的代码也要考虑 fixed() 的作用域。我认为是很糟糕很无谓的转换。
反过来转换就更糟糕了,我认为楼主如果知道堆栈和托管堆是怎么一回事,就不会问这个问题了。只有一种情况,楼主期望的才有可能实现,那就是把数组固定,转成指针,这种指针可以再转回数组,没有内存复制。
补充:.NET技术 , C#