关于对动态链接库的动态调用对内存的控制问题(50分)

  • 主题发起人 主题发起人 DelphiZer
  • 开始时间 开始时间
D

DelphiZer

Unregistered / Unconfirmed
GUEST, unregistred user!
在对动态链接库的动态调用上,我不清楚FreeLibrary释放的是对动态链接库占用内存的控制权的释放还是对占用内存的释放,其低层的原理或运行过程如何?先多谢了。
 
我觉得是内存(提前)
 
LoadLibrary调用动态库,同时如果调用,则将调用记录+1。
FreeLibrary释放本次调用,即调用记录-1
当调用记录为0的时候,它就释放了。
不过不是特别清楚具体在最后一次FreeLibrary的时候是还保留到内存中(可覆盖),还是直接释放?
 
同意楼上的,FreeLibrary就是干这个的。
至于你说“不是特别清楚具体在最后一次FreeLibrary的时候是还保留到内存中(可覆盖),还是直接释放”
一块内存标记为可覆盖了当然是被释放了啊,你的意思是一定要全部清0才叫直接释放?
 
>>FreeLibrary释放的是对动态链接库占用内存的控制权的释放还是对占用内存的释放
DLL是没有内存空间的,DLL不是单独的进程,它必须在某个进程的内存空间内运行
因此,DLL不占用内存,即使在DLL里调用了alloc也只是EXE的内存,
FreeLib后不释放内存的,一般在DLL里不要调用alloc
但也可在Unload时调用的那个回调函数里写释放内存的语句
 
接受答案了.
 

Similar threads

D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
903
DelphiTeacher的专栏
D
后退
顶部