CORBA序列内存泄漏

时间:2012-08-10 09:05:37

标签: c++ memory-leaks sequence corba

我在CORBA中遇到序列序列的问题。我可以通过非优雅的解决方案来解决问题(至少对我来说不是很优雅)。

生成内存泄漏的(非实际)代码如下:

{
   IntMatrix m;
   m.lenght(100);
   for (int i = 0; i < 100; i++)
   {
      m[i].lenght(99);
   }
   //Send 'm' matrix and exit from this scope
}

(非优雅)解决方案就像:

{
  IntMatrix m;
  m.lenght(100);
  intSeq s;
  s.lenght(99);
  for (int i = 0; i < 100; i++)
  {
      m[i] = s;
  }
  //Send 'm' matrix and exit from this scope
}

我一直在寻找互联网上的原因,我只能找到一个名为“发布”的标志文本。

有人能帮助我吗?

感谢。

2 个答案:

答案 0 :(得分:1)

我假设当你说'发送m矩阵'时你就在客户端。

我认为第一段代码是正确的。如果您有内存泄漏,可能是由于您正在使用的ORB实现中的错误。

答案 1 :(得分:0)

我假设您正在尝试从服务器实现返回一系列序列。

在这种情况下,IDL到C ++映射要求您“新建”序列:

尝试这样的事情:

IntMatrix_var m = new IntMatrix;
m->length(100);
for (CORBA::ULong i = 0; i < m->length(); ++i)
{
   m[i].length(99);
   for (CORBA::ULong j = 0; j < m[i].length(); ++j)
   {
      m[i][j] = someValue;
   }
}
return m._retn();