内墙涂料十大名牌:VC复制数据到内存的异常。急~~,在线等。。。。

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/28 15:30:05
定义了一个公共变量:
struct MyFormatData
{
CString idval;
CString cszCurrentPath;
CString cszLocalpath;
};

然后赋值:
MyFormatData mydata;
CTime time;
time=CTime::GetCurrentTime(); //获得当前时间
mydata.idval=time.Format("%d%H%M%S" ); //将日,时,分,秒转换为字符串
mydata.cszLocalpath="";
mydata.cszCurrentPath=szFtpDirectory;

想将这个数据保存到内存中:
HGLOBAL clipbuffer;
clipbuffer = GlobalAlloc(GMEM_MOVEABLE | GMEM_SHARE | GMEM_ZEROINIT | GMEM_DISCARDABLE, sizeof(MyFormatData));
MyFormatData * buffer = (MyFormatData*)GlobalLock(clipbuffer);
*buffer = mydata; //保存到内存
GlobalUnlock(clipbuffer);

编译没有问题:不知道为啥在执行到*buffer = mydata;时抛出异常,在MFC的
struct CStringData中的:
bool IsLocked() const throw()
{
return nRefs < 0;
}
被中断。求救,谢谢!!

buffer是指针,不能向*buffer直接赋一组值。

用memcpy(buffer,&mydata,sizeof(MyFormatData)); 试试