问一下关于动态链接与静态链接的一个差别?

C语言 码拜 9年前 (2015-11-12) 679次浏览
情景描述:
1、程序中使用了DLL。
2、DLL中调用malloc(),  程序中对应地调用了free()
3、书上说,假如DLL和程序链接的C/C++运行库都是DLL版本,那么程序能够正常工作。假如它们链接的C/C++运行库是静态版本,free调用就会失败。
问一下,书上的说法怎么样理解?为什么?
解决方案:35分
请看这个贴,看完LZ就明白了:http://bbs.csdn.net/topics/390712522
解决方案:5分
原因是,运行时库中有,malloc 和free 的实现代码
假如,DLL中静态链接 运行时库,exe 也静态链接 运行时库 ,
那么程序运行时,就会有两份运行时库代码。
他们各自管理各自的内存分配逻辑。
不同模块的内存分配,必须互相匹配,不然就张冠李戴,互相干扰,导致内存管理出错。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明问一下关于动态链接与静态链接的一个差别?
喜欢 (0)
[1034331897@qq.com]
分享 (0)