GlobalAlloc分配内存区的问题

long *p ;
//分配缓存区
CFile FileIris("c:\Iris.txt",CFile::modeRead);
DWORD Length = FileIris.GetLength();
//指向缓存区的指针
p=::GlobalAlloc(0,Length);
最后一句程序报错: error C2440: '=' : cannot convert from 'void *' to 'long *'
求指点,找了半天没解决这个问题

GlobalAlloc返回的都是void*,你需要转换成你需要的类型,然后再保证往这块区域中写入对应类型的数据。这样就没问题

强制转换一下试试?我猜测

强制转换即可,因为申请的内存用来存储什么类型都是可以的,只要长度够