3
double a[] = { 0.11, 0.12, 0.13,
                  0.21, 0.22, 0.23 };

   double b[] = { 1011, 1012,
                  1021, 1022,
                  1031, 1032 };

   double c[] = { 0.00, 0.00,
                  0.00, 0.00 };

   gsl_matrix_view A = gsl_matrix_view_array(a, 2, 3);
   gsl_matrix_view B = gsl_matrix_view_array(b, 3, 2);
   gsl_matrix_view C = gsl_matrix_view_array(c, 2, 2);

   /* Compute C = A B */

   gsl_blas_dgemm (CblasNoTrans, CblasNoTrans,
                   1.0, &A.matrix, &B.matrix,
                   0.0, &C.matrix);

how do I deallocate the memory assigned to the matrices?

4

1 回答 1

2

编译器会处理这些矩阵。除非您使用malloc()/new[]或任何使用malloc()/new[]并赋予您分配内存所有权的功能,否则没有机会泄漏内存。

如果您询问gsl_matrix_view_array() - 文档说返回值是指向原始矩阵中的视图的指针,这意味着没有分配额外的矩阵 - 您只会获得指向同一矩阵的指针。因此,除非您曾经malloc()/new分配原始矩阵,否则您不应该做任何事情。如果您使用malloc()/new[]原始矩阵(不是您的情况,但无论如何) - 调用free()/delete[]原始矩阵,而不是视图。

于 2010-11-25T11:08:32.190 回答