GlobalAlloc申请的内存 为什么不能GlobalFree掉.

flfihpv259 2015-09-30 05:10:48
代码如下:GlobalAlloc申请的剪切板内存复制数据完后不能释放掉,一用GlobalFree(hMemory);就出错,这是为什么呢?


if(!OpenClipboard(NULL)) // 打开剪切板,打开后,其他进程无法访问
{
TRACE(_T("剪切板打开失败,错误代码为:%d\n"),GetLastError());
return;
}
if(!EmptyClipboard()) // 清空剪切板,写入之前,必须先清空剪切板
{
TRACE(_T("清空剪切板失败,错误代码为:%d\n"),GetLastError());
CloseClipboard();
return;
}

//复制数据
HGLOBAL hMemory;
int nContentSize = (int)(t_strlen(lpStr)+1)*sizeof(TCHAR);
if((hMemory = GlobalAlloc(GMEM_MOVEABLE, nContentSize)) == NULL)
{
TRACE(_T("Alloc memory failure!"));
return;
}
LPTSTR lpMemory = (LPTSTR)GlobalLock(hMemory);
memcpy(lpMemory,lpStr,nContentSize);
GlobalUnlock(hMemory);


if(SetClipboardData(CF_UNICODETEXT, hMemory) == NULL)
{
TRACE(_T("设置剪切板数据失败!错误代码为:%d\n"),GetLastError());
}
CloseClipboard();
//GlobalFree(hMemory);
...全文
220 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

1,221

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧