Мне нужно вычислить матричный продукт с помощью прямого расчета. Я написал следующий код:Программа останавливается без ошибок
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
.
Есть ли проблема в моем коде, или почему я не получаю ошибки, но результата тоже нет? Матрицы A
и B
инициализируются случайными величинами, C
полностью равен нулю.
Edit: Allocation Code:
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;
Спасибо!
Является ли ваш 'A' или' B' стек/статический выделенный? –
@ C.R .: A и B выделяются через AllocateDynamicArray (sizeX, sizeX), но я не знаю, были ли они выделены в стек. –