我在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
}
我一直在寻找互联网上的原因,我只能找到一个名为“发布”的标志文本。
有人能帮助我吗?
感谢。
答案 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();