gpt4 book ai didi

c++ - 消除 C++ 和 GNU 科学库代码中的内存泄漏

转载 作者:太空狗 更新时间:2023-10-29 22:52:24 26 4
gpt4 key购买 nike

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);

如何释放分配给矩阵的内存?

最佳答案

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

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

关于c++ - 消除 C++ 和 GNU 科学库代码中的内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4276238/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com