C# 的内存拷贝
来源:互联网 发布:数据分析 da 编辑:程序博客网 时间:2024/06/04 23:31
{
// 相当于序列化与反序列化,但是不用借助外部文件
//1、struct转换为Byte[]
public static Byte[] StructToBytes(Object structure)
{
Int32 size = Marshal.SizeOf(structure);
IntPtr buffer = Marshal.AllocHGlobal(size);
try
{
Marshal.StructureToPtr(structure, buffer, false);
Byte[] bytes = new Byte[size];
Marshal.Copy(buffer, bytes, 0, size);
return bytes;
}
finally
{
Marshal.FreeHGlobal(buffer);
}
}
//2、Byte[]转换为struct
public static Object BytesToStruct(Byte[] bytes, Type strcutType)
{
Int32 size = Marshal.SizeOf(strcutType);
IntPtr buffer = Marshal.AllocHGlobal(size);
try
{
Marshal.Copy(bytes, 0, buffer, size);
return Marshal.PtrToStructure(buffer, strcutType);
}
finally
{
Marshal.FreeHGlobal(buffer);
}
}
}
注:此处的类或结构必须是顺序和长度都相同。可以参考 [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
//3.
byte[] newm = new byte[retVal];int t = 1234;GCHandle h = GCHandle.Alloc(t, GCHandleType.Pinned);IntPtr p = h.AddrOfPinnedObject();Marshal.Copy(p, newm, 0, retVal);
- C# 的内存拷贝
- C# 的内存拷贝
- 内存拷贝的注意事项
- C# 对象的拷贝
- C# 对象的拷贝
- C# 数组的拷贝
- c#浅拷贝/深拷贝和内存分配
- c# 两个intPtr之间内存拷贝
- C#对象的浅拷贝,深拷贝
- C#对象的浅拷贝,深拷贝
- C#的浅拷贝和深拷贝
- 内存拷贝的优化方法
- 内存拷贝的优化方法
- 内存拷贝函数的实现
- 内存拷贝的优化方法
- 内存拷贝函数的实现
- 内存拷贝函数的实现
- 完成内存之间的拷贝
- 抽象类和接口的区别
- Spring 注解学习手札(一) 构建简单Web应用
- 谷歌推智能鞋产品 可在运动时发出俏皮语音评论
- 测试从零开始(三)黑盒测试
- load jarfile
- C# 的内存拷贝
- SOA面向服务架构——SOA的概念
- TRUNCATE TABLE
- 去掉优酷广告,去掉Y2B广告
- GCHandle
- 泛型
- android 之 异常集合
- android 零星调试笔记
- Hdu 3068 最长回文 (manacher算法)