2010-11-09 286 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

相關問題