首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >应用程序和包之间共享内存管理器

应用程序和包之间共享内存管理器
EN

Stack Overflow用户
提问于 2010-02-22 10:35:42
回答 2查看 816关注 0票数 2

这个问题是question.的后续问题。

如何实现我的应用程序和运行时包使用相同的内存管理器?我认为默认情况是这样的,但是由于我遇到奇怪的访问冲突和无效的指针异常,我在进入运行时包和运行时包之前插入了对GetMemoryManagerState的调用,返回的状态似乎表明包和应用程序使用单独的内存管理器。

在调用运行时包中的方法之前,有61个已分配的中介块,调用之后(在包中被调用的方法开始时)有0个已分配的中介块。

你对此有什么解释吗?要让包和应用程序共享内存管理器,我需要做什么?在使用FastMM时,还有更复杂的问题吗?

编辑 BTW,有没有比比较内存管理器状态更好的方法来检查是否使用相同的内存管理器?TMemoryManager原来是一个记录,所以我不能比较嵌入。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-02-23 09:49:58

由于ldsandonRob Kennedy,我发现有必要使用运行时包(至少对于RTL),以便应用程序和包共享内存管理器。

启用“使用运行时包”并在包列表中添加"rtl“解决了问题。感谢你们的帮助。

票数 1
EN

Stack Overflow用户

发布于 2010-02-22 12:46:47

包使用与主程序相同的RTL状态。这是包定义的一部分。

内存管理器包括在内。

顺便说一句,我关于包裹的笔记在这里:http://wiki.freepascal.org/packages

目前,FPC仍然离此很远(主要是因为需要通过外部链接器在众多OSes和体系结构上实现这一点)。此外,由于FPC版本数量较多,因此我怀疑它不会像许多人所认为的那样有用(我不期望Lazarus组件以二进制的形式分发,只相当于BPLs/..dcp组合)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2310273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档