程序停止运行,没有出现错误

Program stops running without error

本文关键字:错误 运行 程序      更新时间:2023-10-16

我必须通过直接计算来计算矩阵乘积。我写了以下代码:

template <typename T>
void multiplicate_straight(T ** A, T ** B, T ** C, int sizeX)
{
    T ** D = AllocateDynamicArray2D<T>(sizeX, sizeX);
    transpose_matrix(B, D,sizeX);
    for(int i = 0; i < sizeX; i++)
    {
        for(int j = 0; j < sizeX; j++)
        {
            for(int g = 0; g < sizeX; g++)
            {
                C[i][j] += A[i][g]*D[j][g];
            }
        }
    }
    FreeDynamicArray2D<T>(D);
}

有了size = 12,一切都正常,但当我将值设置为14时,程序会自动关闭,不会引发任何错误,返回值为0。我的矩阵的数据类型是double
我的代码有问题吗?或者为什么我没有错误,但也没有结果?矩阵AB用随机变量初始化,C完全为零
编辑:分配代码:

template <typename T> T ** AllocateDynamicArray2D( int nRows, int nCols)
    {
          T **dynamicArray;
          dynamicArray = new T*[nRows];
          for( int i = 0 ; i < nRows ; i++ )
          dynamicArray[i] = new T [nCols];
          return dynamicArray;
    };
int sizeX = 14;

谢谢!

如果它正在关闭,很可能会崩溃,那么应该使用try-catch。将任何捕获的错误的内容打印到日志或控制台。