我試圖將正確工作在Windows中的庫移植到Linux。將代碼從Windows移植到Linux時刪除陣列時出錯
在這幾行代碼我得到一個錯誤:
long* permutation = new long[result->getGeneListCount()];
for(long i=0; i<result->getGeneListCount(); i++)
permutation[i]=i;
Util::ArrayUtil::DurstenfeldArrayPermutation<long>(permutation, result->getGeneListCount());
//result->PerformGenePermutation(permutation);
std::cout << "Just skipped the permutation" << std::endl;
delete[] permutation;
的錯誤似乎對我來說,在刪除過程中發生。我知道,因爲我已經評論了PerformGenePermutation()
,我可以簡單地評論其他行,但類似的問題可能會在其他代碼中再次出現,所以我想了解錯誤。
錯誤輸出,我得到的是:
*** glibc detected *** /usr/lib/jvm/java-7-oracle/bin/java: munmap_chunk(): invalid pointer: 0x09f287f8 ***
誰能幫助我,好嗎?
請問,如果您需要進一步的細節。
是否有可能'result-> getGeneListCount()'retuns'0'? – andre
'permutation'指針是否改變了對'DurstenfeldArrayPermutation'的調用?你可以通過在調用之前和之後打印指針值('printf(「%p \ n」,permutation);')來驗證它嗎? DurstenfeldArrayPermutation'自己釋放指針嗎? – ulidtko
'DurstenfeldArrayPermutation'是否通過引用獲取其第一個參數?如果是這樣,它可能試圖重新分配它,這在某些平臺上可能沒有問題(其中'malloc'和'new []'用戶具有相同的底層分配器),但是在其他平臺上則沒有。 –