typedef struct a
{
//......
}a;typedef struct b
{
//......
}b;a a1;
b a2;HGLOBAL ha=GlobalAlloc(GMEM_FIXED,sizeof(a)+sizeof(b));LPVOID lp=GlobalLock(ha);CopyMemory(lp,&a1,sizeof(a));
CopyMemory(lp+sizeof(a),&a2,sizeof(b));
{
//......
}a;typedef struct b
{
//......
}b;a a1;
b a2;HGLOBAL ha=GlobalAlloc(GMEM_FIXED,sizeof(a)+sizeof(b));LPVOID lp=GlobalLock(ha);CopyMemory(lp,&a1,sizeof(a));
CopyMemory(lp+sizeof(a),&a2,sizeof(b));
将GlobalAlloc替换为HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(...));
去掉GlobalLock(...);
或者使用new操作符!
Global和Local的内存操作已经只是为了与16位的程序兼容保留,新的程序最好不用!
千万注意调用内存的释放函数
GlobalAlloc-->GlobalFree
HeapAlloc-->HeapFree
new--->delete