请教关于动态链接与静态链接的一个差别

请问关于动态链接与静态链接的一个差别?
情景描述:
1、程序中使用了DLL。
2、DLL中调用malloc(),  程序中对应地调用了free()
3、书上说,如果DLL和程序链接的C/C++运行库都是DLL版本,那么程序能够正常工作。如果它们链接的C/C++运行库是静态版本,free调用就会失败。

请问,书上的说法如何理解?为什么?
------解决思路----------------------
请看这个贴,看完楼主就明白了:http://bbs.****.net/topics/390712522
------解决思路----------------------
因为,运行时库中有,malloc 和free 的实现代码
如果,DLL中静态链接 运行时库,exe 也静态链接 运行时库 ,
那么程序运行时,就会有两份运行时库代码。
他们各自管理各自的内存分配逻辑。
不同模块的内存分配,必须互相匹配,不然就张冠李戴,互相干扰,导致内存管理出错。