我正在编写一个图像注册程序,我发现使用 mkl_free() 时出现一个奇怪的错误。我使用 MKL 函数从 MATLAB 编写了矩阵指数函数的实现 - expm()。我已经单独对其进行了测试,它可以正常工作而不会遇到任何错误。
代码可以在这里找到:https ://github.com/poliu2s/MKL/blob/master/matrix_exponential.cpp
当我从需要它进行计算的其他函数调用它时,就会出现问题。我的程序目前在我调用第一个 mkl_free() 之前就崩溃了,所以我怀疑这是某种形式的内存泄漏。但是函数中使用的矩阵不应该是自包含的吗?我看不出释放它们会如何导致我的整个程序崩溃。
调用 mkl_free_buffers(); 和 mkl_thread_free_buffers(); 没有产生我可以观察到的效果。我曾尝试在程序执行开始时以速度为代价使用 mkl_disable_fast_mm() 关闭英特尔内存管理器,但也无济于事。
我已经检查了进入函数本身的输入,并且矩阵完全有效 - 就像我在测试期间使用的一样。
当我在某些循环中调用 mkl_free(array) 时,为什么我的程序会崩溃?