我的程序在第 7 行在此函数上崩溃,当我malloc()
在发布模式下运行时调用时,我收到“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 行长)。