FreeLibrary造成死锁的问题探讨

本文详细探讨了在编写测试程序时,使用LoadLibrary和FreeLibrary函数处理DLL导致程序卡死的问题。通过对比自己的测试程序与自定义的DLL,作者发现将LoadLibrary和FreeLibrary放在Dllmain函数中可以避免问题发生。文章深入分析了DLL加载与卸载机制,并解释了在Dllmain中使用这些函数可能存在的风险。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    今天自己在写一测试程序时,显示调用一个DLL时,使用LoadLibrary函数,然后使用FreeLibrary函数进行释放时,出现了程序卡死的情况,网上这方面讲解比较少,且认为这造成了死锁,具体原因确实也弄不清楚~~不知道是测试程序的问题还是DLL的问题,后来索性自己写个DLL,然后这自己写的DLL进行LoadLibrary和FreeLibrary处理,发现并没有出现卡死的情况,难道原来是DLL本身的问题~~具体DLL的问题我也无法弄清楚。

    而我现在要写一个DLL,需要调用原来的DLL的一些函数,开始的时候,我是在要实现的函数中进行LoadLibrary和FreeLibrary(这样写个人感觉其实并不好),发现出现了上面这个问题,总是找不到原因,后来想到原来写过一个类似的动态链接库,是在Dllmain中进行LoadLibrary和FreeLibrary的,我也就照葫芦画瓢,同样这么使用,发现这样做却OK了,自己也不清楚其中的原因,在MSDN上说,在Dllmain中使用LoadLibrary和FreeLibrary是不安全的,但是也顾不了那么多了~~

 

具体原因依然没弄明白,先记在这里,以免后来的朋友遇到同样的问题~~

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值