急为啥PostMessage发送结构体会乱码

急,,,为什么PostMessage发送结构体会乱码

//结构体
struct Student
{
    char Name[10];
    int age;

};

//发送端@bcb工程
   Student *stu =new Student;
   strcpy(stu->Name,"date");
   stu->age = 18;
   PostMessage(FindWindow(NULL,"Receive"),WM_SEND,0,(LPARAM)&stu);  //已发送成功

//接收端@VS MFC工程
LRESULT CReceiveDlg::OnMyMessage(WPARAM wParam, LPARAM lParam) 

// TODO: 处理用户自定义消息 
Student* stu=(Student *)lParam;
int n = stu->age;         //数据不对
char nam[10];
strcpy(nam, stu->Name);    //乱码
delete stu;
return 0;
}

如上,PostMessage给其他程序发送结构体接收到的数据会乱码,SendMessage的WM_COPYDATA不考虑,效率偏低,也不考虑共享内存的方法,只想通过PostMessage给其他程序发送结构体。请问各位有什么解决方法呢?
------最佳解决方案--------------------
而且不同进程之间最好用共享内存.
------其他解决方案--------------------
PostMessage(FindWindow(NULL,"Receive"),WM_SEND,0,(LPARAM)stu); 

把&去掉
------其他解决方案--------------------
FILE_MAP_WRITE,0,0,0);
if(pv!=NULL){
memcpy(pv,ss.str().c_str(),sz);
memset((char*)pv+sz,0,256-sz);
UnmapViewOfFile(pv);
}
//send to target process
DWORD idProcess;
GetWindowThreadProcessId(hwnd,&idProcess);
HANDLE hProcess= OpenProcess(PROCESS_DUP_HANDLE,FALSE,idProcess);
HANDLE hDup=0;
DuplicateHandle(GetCurrentProcess(),hFile,hProcess,&hDup,NULL,FALSE,DUPLICATE_SAME_ACCESS);
PostMessage(hwnd,WM_MSG_SEND,0,(LPARAM)hDup);
CloseHandle(hFile);
/*
if(pStream->Write(ss.str().c_str(),ss.str().size(),NULL)!=S_OK){
cout<<"stream write fail"<<endl;
}
HGLOBAL hgb=NULL;
//PostMessage(hwnd,WM_MSG_SEND,0,(LPARAM)hgb);

GetHGlobalFromStream(pStream,&hgb);

pStream->Release();
ULONG sz=GlobalSize(hgb);
*/
cout<<"item posted, bytes ="<<sz<<endl<<endl;

CoUninitialize();
}else{
break;
}
} while (1);

return 0;
}

接收端:

#include <windows.h>
#include <stdio.h>
#include <sstream>
using namespace std;
struct Stu{
char name[10];
int m_nAge;
};

istream& operator>>(istream& is,Stu& x)
{
is>>x.name;
is>>x.m_nAge;
return is;
}

ostream& operator<<(ostream& os,Stu& x)
{
os<<x.name;
os<<x.m_nAge;
return os;
}

#define WM_MSG_SEND WM_USER+125

LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT ("RecvData") ;
HWND         hwnd ;
MSG          msg ;