當我在釋放模式下運行時,我調用malloc()
我的程序在第7行崩潰了,我得到`Program.exe已停止工作消息,當我運行在調試器,大部分時間它成功,但有時我得到這個消息(特別是在較大的輸入): 函數在釋放模式下崩潰,但在調試器中運行完美
MONOM* polynomialsProduct(MONOM* poly1, int size1, MONOM* poly2, int size2, int* productSize)
{
int i1, i2;
int phSize = 1, logSize = 0;
MONOM* product;
product = (MONOM*)malloc(phSize*sizeof(MONOM));
monomAllocationVerification(product);
for (i1 = 0; i1 < size1; i1++)
{
for (i2 = 0; i2 < size2; i2++)
{
if (logSize == phSize)
{
phSize *= 2;
product = (MONOM*)realloc(product,phSize*sizeof(MONOM));
monomAllocationVerification(product);
}
product[logSize].coefficient = poly1[i1].coefficient * poly2[i2].coefficient;
product[logSize].power = poly1[i1].power + poly2[i2].power;
logSize++;
}
}
mergeSort(product,logSize);
*productSize = sumMonomsWithSamePower(product, logSize);
return product;
}
我明白,我處理內存錯誤和問題,但有任何快速分析我的代碼並查找內存錯誤的方法?我看着我的代碼十幾次尋找這種錯誤,一無所獲。 (我不想在這裏發佈代碼,因爲它的長度爲420行)。
那麼,調試時崩潰時的phSize是什麼? –
當你的程序在一個malloc上崩潰時,特別是如果它是'有時'崩潰,真正的錯誤在程序執行的早期。這是第一次調用malloc嗎? – Fred
@意義問題,'phSize = 1' – Quaker