Итак, я прочитал некоторые другие темы, которые охватывают это.Они отмечают, что это dynmaic, поэтому вам нужно выделить эту память.Проблема, когда я выделяю это пространство и помещаю его в мои значения, заключается в том, что теперь моя память не сохраняется в массиве.Мне было интересно, ошибаюсь ли я, или есть какое-то понятие, которое я неправильно понимаю в отношении массивов и c.
//.c file
int *multiply(int m, int n, int *matrix, int *vector,int sizeV){
int *final = (int*) malloc(sizeof(int)*n);
int i = 0;
int j = 0;
int row = 0;
int column = 0;
if(n != sizeV){return NULL;};
for(i = 0;i < sizeV;i++)
{
while(column < n)
{
final[i] += matrix[row] * vector[column];
row++;
column++;
}
column = 0;
j = 0;
}
for(i = 0;i < sizeV;i++)
{
printf("\nfinal[%d] = %d\n",i,final[i]);
}
return final;
}
googletest //.googletest file
TEST(MultiplyTest, Correct_Result_3x3){
int matrix[] = {1,2,3,4,5,6,7,8,9};
int vector[] = {1,2,3};
int correct[] = {14, 32, 50};
int *result = multiply(3,3,(int *)matrix, vector,3);
ASSERT_NE(-1, *(result));
for(int i = 0; i < 3; i++)
EXPECT_EQ(correct[i], *(&result[i]));
}
TEST(MultiplyTest, Correct_Result_2x2){
int matrix[] = {1,2,4,5};
int vector[] = {1,2,};
int correct[] = {5, 14};
int *result = multiply(2,2,(int *)matrix, vector,2);
ASSERT_NE(-1, *(result));
for(int i = 0; i < 2; i++)
EXPECT_EQ(correct[i], *(result + i));
}
output // output [output [RUN] MultiplyTest.Correct_Result_3x3
final[0] = -1656784906
final[1] = 32620
final[2] = -1656784870
src/Matrix-vector_unittests.cpp:15: Failure
Expected equality of these values:
correct[i]
Which is: 14
*(&result[i])
Which is: -1656784906
src/Matrix-vector_unittests.cpp:15: Failure
Expected equality of these values:
correct[i]
Which is: 32
*(&result[i])
Which is: 32620
src/Matrix-vector_unittests.cpp:15: Failure
Expected equality of these values:
correct[i]
Which is: 50
*(&result[i])
Which is: -1656784870
[ FAILED ] MultiplyTest.Correct_Result_3x3 (0 ms)
[ RUN ] MultiplyTest.Correct_Result_2x2
final[0] = -1656784931
final[1] = 32602
src/Matrix-vector_unittests.cpp:27: Failure
Expected equality of these values:
correct[i]
Which is: 5
*(result + i)
Which is: -1656784931
src/Matrix-vector_unittests.cpp:27: Failure
Ожидаемое равенство этих значений:
Опять же, я не уверен, что я делаю неправильно.Я не освобождаю память в настоящее время.Я, в основном, пытаюсь передать эти правильные значения прямо сейчас и испытываю трудности с этим.