【发布时间】:2011-12-30 18:27:32
【问题描述】:
我的程序架构涉及插件(dll)和exe(显然)。我们是唯一的插件提供商。有人告诉我,如果我们静态链接 c 运行时,在插件中分配内存然后在 exe 代码中释放它是一个潜在问题。但是,如果我们动态链接它,那么只有一个堆,而 c 运行时可以访问所有堆。我们根据这个建议切换到动态链接,但是我们从切换中看到的只是与新运行时的分发和安装相关的头痛和麻烦。 (不知道我们在内存分配问题方面避免了什么。)
内存分配的含义是什么?假设一个插件分配内存,而 exe 释放它。静态与动态链接的 c 运行时之间是否存在不同的行为?如果我们使用插件,我们在静态链接 c 运行时会遇到麻烦吗?如果我们切换回静态链接,会不会弄乱内存泄漏检测和故障转储报告?
符合 cmets 在Which VC++ runtime version do I choose - static or dynamic? 特别是Which VC++ runtime version do I choose - static or dynamic? 上提出的一些问题
http://msdn.microsoft.com/en-us/library/abx4dbyh(v=VS.100).aspx 也有一些讨论。
【问题讨论】:
标签: c visual-c++ dynamic-linking static-linking msvcrt