1、最好用System.Runtime.Interopservices.Marshal类来操作内存,比如WriteInteger, PtrToStingAuto, StingToPtrAuto等等。
2、memcpy是C运行期函数,没有对应的函数导出。
3、如果一定要用(不好的方法),可以用Kernel32.dll中的RtlCopyMemory。void*将对应C#中的IntPtr。

解决方案 »

  1.   

    非常感谢!我用Marshal类的Copy函数进行拷贝,当适用StructToPtr取一个结构或类的指针的时候,在不断调用Copy函数的时候,常有出现“传递给缓冲的数据区太小”这样的错误,却找不到是因为什么导致这样的错误,该如何解决这种错误?是不是由于C#自己管理内存的关系?
      

  2.   

    你先保证结构体没问题了不就行了吗?你看看API那些结构体,都没问题.
      

  3.   

    结构体肯定没有问题,因为同一个byte数组如果用StructToPtr取一个结构或类的指针,调用Copy函数出错,而如果一个变量一个变量的转换却没有任何问题。