2013-03-21 54 views
0

C++ Qt的內存分配異常是如何這不會發生,這將引發異常用的QList

for(int h = 0 ; h < listOne.count() ; ++h) { 
     delete[] listOne[h]; 
    } 

用的QList那麼listOne?我刪除浮動*陣列迭代,直到我在的QList到達元素的數量...

編輯& SOLUTION

事實上,當我在加入中的QList一個項目只有一個浮子失敗。那麼,它不再是一個float*,你不能delete []它。

+4

顯示在其中添加元素的QList作。 – 2013-03-21 09:55:54

+0

顯示listOne聲明。 – AnatolyS 2013-03-21 10:10:35

+1

顯示異常。 – user1810087 2013-03-21 10:26:54

回答

2
How can this ever happen that this throws an exception 

一個可能性:你添加一個數組2次到列表。 一個補丁修復:

for(int h = 0 ; h < listOne.count() ; ++h) { 
    delete[] listOne[h]; 
    listOne[h]=nullptr; 
} 

也許別人的錯誤(你不加入數組指針列表)。

編輯:

事實上,當我加入的 的QList的一個項目只有一個浮子失敗。然後,它不再是一個浮動*,你不能刪除[]它。

我懷疑... 一個非常簡單的解決辦法:

float *pi=new float[1]; 
pi[0]=3.14f; 

現在添加pi到列表