CORBA 内存管理与对象引用全解析
一、C++ 内存管理规则
在使用 CORBA 提供的复杂结构化类型时,动态内存分配是不可避免的问题。下面是 C++ 内存管理规则的总结:
| 参数传递模式 | 调用者职责 | 被调用者职责 |
| — | — | — |
| in | 分配、初始化、释放 | 复制 |
| inout | 分配、初始化、释放 | 复制 |
| out (固定长度) | 分配、释放 | 初始化、复制 |
| out (可变长度) | 释放 | 分配、初始化、复制 |
| 返回值 | 释放 | 分配、初始化、复制 |
这里的复制指的是,被调用者可能希望在调用返回后仍能访问参数或返回值,此时就需要显式复制数据。
CORBA C++ 映射提供了 _var 类型来帮助处理内存管理,它实现了智能指针功能,有助于避免内存泄漏。不过,分布式系统中的内存管理问题仍然十分复杂。与典型的独立应用程序更多使用栈分配数据不同,分布式编程几乎总是要处理堆分配数据,这增加了内存泄漏的风险。对于初学者来说,有一个实用的经验法则:调用者始终拥有与参数和返回值相关的内存,即调用者负责删除参数和返回值。
二、对象引用概述
在 CORBA 中,对象引用是一个关键的抽象概念。它封装了远程 CORBA 对象的位置细节,屏蔽了网络协议层。在引入 CORBA 服务的系统中,对象引用还负责封装安全细节和传播事务上下文。
从开发者的角度看,对象引用似乎很简单,就像普通的 C++ 或 Java 对象一样。可以像调用普通对象的方法一样调用对象引用的方法,后续定位 CORBA 对象、建
超级会员免费看
订阅专栏 解锁全文
42

被折叠的 条评论
为什么被折叠?



