ShareMem和SimpleShareMem

本节介绍如何使用内存管理器共享内存。

Win32Win64 上,如果 DLL 导出将长字符串或动态数组作为参数或函数结果传递的例程(直接或嵌套在记录或对象中),则 DLL 及其客户端应用程序(或 DLL)必须共享相同的内存经理。如果一个应用程序或 DLL 使用System.NewSystem.GetMem分配内存,则通过调用另一个模块中的System.DisposeSystem.FreeMem释放内存,情况也是如此。有两种互斥的方法可以在应用程序及其库之间共享内存管理器:ShareMemSimpleShareMem

Posix 上,应用程序和共享库已经共享使用系统库,包括 malloc、free 和 realloc。

注意:当 DLL 静态链接到应用程序时,DLL 在应用程序之前被初始化。如果在两者中都使用SimpleShareMem共享方法,则应用程序将使用 DLL 的内存管理器。只有共享其内存管理器的模块才能更改内存管理器设置并检索内存管理器统计信息。更改任何其他模块中的设置将不起作用,因为它们的内存管理器没有被使用。手动控制内存管理器共享机制是可能的,但很少需要。

使用 ShareMem

  1. ShareMem列为程序和库使用子句中的第一个单元。您的模块将依赖于外部BORLNDMM.DLL库,允许它们共享动态分配的内存。
  2. 部署BORLNDMM.DLL与应用程序或DLL使用ShareMem。当应用程序或DLL使用ShareMem,它的内存管理器通过在存储器管理器替换BORLNDMM.DLL

使用 SimpleShareMem

  1. SimpleShareMem列为每个模块中程序和库使用子句的第一个单元。首先初始化的模块将是共享其内存管理器的模块。之后初始化的所有模块都将使用第一个模块的内存管理器。
  2. 首先初始化的模块将是共享其内存管理器的模块。之后初始化的所有模块都将使用第一个模块的内存管理器。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值