在一个程序中加载另一程序使用GlobalFree()函数出错的原因

首先是添加资源

 

 

在资源类型中填写自己定义的类型

 

 

这是我自己导入的一个程序

导入之后开始编写代码,代码如下(可以添加一个消息响应函数生成该导入的程序)

 1 HRSRC hRes;
 2     hRes=FindResource(NULL,MAKEINTRESOURCE(IDR_EXE2),"EXE");   //找插入的资源
 3     HGLOBAL hgRes;
 4     hgRes=LoadResource(NULL,hRes);
 5     void *pRes=LockResource(hgRes);
 6     DWORD size;
 7     size=SizeofResource(NULL,hRes);
 8     char *hmem;
 9     hmem=(char*)malloc(size+1);   //分配内存块
10     if(hmem==NULL)
11     {
12         AfxMessageBox("分配内存失败!");
13             return ;
14     }
15     WriteProcessMemory(GetCurrentProcess(),(void*)hmem,pRes,size,NULL);  //写入内存块中
16     HANDLE FilePath;
17     //创建文件的路径属性等
18     FilePath=CreateFile("C:\\Users\\kjinziguiteer\\Desktop\\尽子轨.exe",GENERIC_WRITE,NULL,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
19 
20     DWORD nWrite;
21     WriteFile(FilePath,(void*)hmem,size,&nWrite,NULL);
22     CloseHandle(FilePath);
23     //GlobalFree(hgRes);
24     MessageBox(NULL,"生成程序成功",NULL);
25     CDialog::OnOK();
26     

在这代码中有个错误,就是

1 HGLOBAL hgRes;
2 hgRes=LoadResource(NULL,hRes);
3 //GlobalFree(hgRes);//这行代码中是不需要释放资源句柄的,因为调用 //了该函数,之前不知道程序一直崩溃,甚是忧伤

这就可以解决了。拔凉拔凉的。

转载于:https://www.cnblogs.com/newworldcom/p/3459961.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值