C# 学习使用IntPtr

        IntPtr _ptr = Marshal.AllocHGlobal(xxxx);申请空间
        Marshal.Copy(Data, Offset, _ptr, xxxx);data的offset开始取xxxx长度给_ptr
        Marshal.FreeHGlobal(_ptr);释放

使用泛型方便数据转换

copy之后配合(Type)Marshal.PtrToStructure(ptr,someData.getType())写起来比较方便 C#里连int都算structure

 

相当于

struct Test
{
	int a = 2;
};
int main()
{
	int _size = sizeof(Test);
	char* ptr = (char*)malloc(_size);
	Test test;
	memcpy_s(ptr, _size, &test, _size);
	printf("%d\n", ((Test*)ptr)->a);
	free(ptr);
}

不过这个getType()。。CPP我怎么感觉没这个操作呢?。?

你可能感兴趣的:(C#,基础,C++)