返回序列CORBA C ++服务器Java客户端时出现分段错误

时间:2014-05-20 14:21:58

标签: c++ segmentation-fault corba

我正在开发一个项目,我需要使用swing实现GUI,在C ++中实现聊天服务器,使用Java实现聊天客户端。

我遇到了这个问题,实施了几乎相同的项目:

Segmentation fault CORBA C++

这是我的IDL的一部分,问题是:

typedef sequence<ICliente> ListaClientes;

interface IServer
{
  attribute ListaClientes lista;
  void registrar_usuario (in ICliente cliente) raises (usuarioRegistrado);
  IConversacion crear_conversacion (in ICliente cliente);
  ListaClientes obtener_lista();
  void dar_baja(in ICliente cliente);
};

然后我得到分段错误的代码部分就是这个:

ListaClientes* Server_i::obtener_lista() {
   return userList._retn();
}

其中:

ListaClientes_var userList=new ListaClientes(size);

或者:

ListaClientes* userList=new ListaClientes(size);


ListaClientes* Server_i::obtener_lista() {
   return userList;
}

1 个答案:

答案 0 :(得分:2)

应该是

ListaClientes* Server_i::obtener_lista() {
   ListaClientes_var my_list = new ListaClientes(size);
   my_list->length (size);
   // Fill the elements in the newly created sequence by doing a duplicate of each object reference as it exists in the member variable
    for(CORBA::ULong i=0;i<userList->length();i++){
      my_list[i] = ICliente::_duplicate(userList[i]);
    }
   return my_list._retn();
}