0

私のプログラムは 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 行の長さなので、ここには掲載しませんでした)。

4

2 に答える 2