2012-12-11 97 views
0

我有QList<float**>。我第一次迭代上的元素與他們一起工作:Qt C++刪除QList中的float **元素<float**>

for(int i = 0 ; i < nb ; i++) 
{ 
    float** data1 = data_list.at(i) ; 
    float** data2 = data_list.at(i + 1) ; 
    // do things with data1 and data2 

} 

會發生什麼,如果我delete[]在C-時尚的方式data1data2這個循環裏?和i+1data_list中的元素是否也被銷燬(因此i無法再訪問它們)?

+0

指向的元素被刪除,但(現在懸掛的)指針仍然存在。 –

+0

並確保'nb'至少比data_list.size()'小1 ... –

+1

您可能也有興趣[qDeleteAll()](http://doc-snapshot.qt-project。 org/4.8/qtalgorithms.html#qDeleteAll),如果你想離開C風格。 – Phlucious

回答

2

它是一個列表float**。他們指向的float*不在列表中。 這意味着如果您使用delete[],則釋放內存,但data_list本身不會更改。在這之後他們將是無效的指針。