我的程序架构涉及插件(dll)和exe(显然)。我们是唯一的插件提供者。有人告诉我,在插件中分配内存,然后在exe代码中释放它,如果我们静态链接c运行时,这可能是一个潜在问题。但是,如果我们动态链接它,就只有一个堆栈,c运行时可以访问其中所有内容。基于此建议,我们切换到了动态链接,但是我们从切换中看到的只是与新运行时的分发和安装相关的头疼和麻烦。(不知道我们在内存分配问题方面避免了什么。)
内存分配的影响是什么?假设插件分配内存,exe释放它。静态链接c运行时和动态链接c运行时之间是否有不同的行为?如果我们使用插件,静态链接c运行时会有问题吗?如果我们切换回静态链接,那么会破坏内存泄漏检测和崩溃转储报告吗?
符合评论中提出的一些问题 我应该选择静态还是动态的VC++运行时版本?,特别是我应该选择静态还是动态的VC++运行时版本? 还有一些讨论在http://msdn.microsoft.com/en-us/library/abx4dbyh(v=VS.100).aspx。
内存分配的影响是什么?假设插件分配内存,exe释放它。静态链接c运行时和动态链接c运行时之间是否有不同的行为?如果我们使用插件,静态链接c运行时会有问题吗?如果我们切换回静态链接,那么会破坏内存泄漏检测和崩溃转储报告吗?
符合评论中提出的一些问题 我应该选择静态还是动态的VC++运行时版本?,特别是我应该选择静态还是动态的VC++运行时版本? 还有一些讨论在http://msdn.microsoft.com/en-us/library/abx4dbyh(v=VS.100).aspx。
malloc
时,您会得到模块A的堆,然后当您从模块B调用free
时,您会得到模块B的堆。 malloc堆和运行时之间存在一对一的关系。 - David Heffernan