TCHAR t_i = (TCHAR)i;
HGLOBAL hData = GlobalAlloc(GHND, (sContens.GetLength()+2)*2 );
TCHAR *pS = (TCHAR *)GlobalLock( hData );
memcpy(pS , &t_i ,2);
memcpy( pS+2, (LPCTSTR)sContens, (sContens.GetLength()+1)*2 );
GlobalUnlock( hData );想在hData内存块中写入一个整数i和一个字符串sContens,报错堆被损坏了,请问原因是什么?如何修正呢?谢谢
1)(sContens.GetLength()+2)*2 应该要变为(sContens.GetLength() + sizeof(TCHAR) * 2);
2)memcpy(pS , &t_i ,2) 应该要变为memcpy(pS , &t_i , sizeof(TCHAR));
3) memcpy(pS+2, (LPCTSTR)sContens, (sContens.GetLength()+1)*2 )应该要变为
memcpy(pS+sizeof(TCHAR), (LPCTSTR)sContens, sContens.GetLength);