2010-11-09 219 views

回答

20

通过返回一个std :: vector。

+7

+1这是答案。 – 2010-11-09 21:14:05

4
myobject *myfunc() 
{ 
    return new myobject[10]; 
} 

但要小心 - 您将数组的所有权转移给调用者,可能是导致内存泄漏的原因。

编辑:返回一个指向数组的指针比返回一个std :: vector要快得多。如果你打算使用std :: vector(正如其他人写的那样),你可能会喜欢这样做:

void myfunc(std::vector<myobject> &result) 
{ 
    result.resize(0); 
    for(int i=0;i<10;++i) 
     result.push_back(myobject()); 
} 
+0

技术上正确。但是这忽略了这是可怕的代码这一事实。 (编辑:也许它是对象) – 2010-11-09 21:15:28

+0

@John这段代码有什么可怕的?对象与此有什么关系? – 2010-11-09 21:18:45

+0

@Let_Me_Be:以相反的顺序:OP特意询问一组对象。如果你已经连续超过了几天,应该清楚为什么这是不好的。泄漏的内存不好,这个代码是内存泄漏的温床。 – 2010-11-09 21:28:06

相关问题