}
};
上述实现初看起来可以正常工作,但是根据上面的讨论,ORB会释放返回值指针的地址空间,这将导致demo_被意外释放,最终导致错误的发生。因此,我们应该将实现代码改为:
DemoStruct* get() {
::Device::DeviceID_var dev_id = new ::Device::DeviceID;
dev_id->device_name = CORBA::string_dup(id_->device_name);
return dev_id._retn();
}
而客户方代码的代码是这样的:
::Device::DeviceID_var device_id = this->device_id();
参考:
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/










