Issue with mkl_free()
Issue with mkl_free()
我正在编写一个图像注册程序,在使用mkl_free()时发现了一个奇怪的错误。我使用MKL函数从MATLAB中编写了矩阵指数函数expm()的实现。我已经单独测试了它,它工作时没有遇到任何错误。
代码可在此处找到:https://github.com/poliu2s/MKL/blob/master/matrix_exponential.cpp
当我从其他需要它进行计算的函数调用它时,就会出现问题。我的程序在调用第一个mkl_free()之前就崩溃了,所以我怀疑这是某种形式的内存泄漏。但是函数中使用的矩阵不应该是自包含的吗?我不知道释放它们会导致我的整个程序崩溃。
调用mkl_free_buffer();和mkl_thread_free_buffer();没有产生我能观察到的效果。我曾尝试在程序执行之初用mkl_disable_fast_mm()关闭"英特尔内存管理器",但也没有成功。
我已经检查了进入函数本身的输入,矩阵是完全有效的——就像我在测试中使用的一样。
当我在某些循环中调用mkl_free(数组)时,我的程序会崩溃,这有什么原因吗?
您的代码有几个问题。也不一定,但可能会导致segfault,但您应该在调查问题时修复它们。
- 数据副本签名为:
void cblas_dcopy(常量MKL_INT N,常量double*X,常量MKL_INTincX,双*Y,常量MKL_INT incY)
关于风格的两条评论:
- 我建议对阶乘的输入和输出变量使用相同的类型,例如无符号长或无符号双精度,但对递归函数不使用混合签名
- 作为这个函数的用户,我希望我负责为m_exp分配内存。所以我会把这个变成函数签名。将您的函数调用与mkl的调用进行比较,用户应该负责的所有内存都必须由他负责,并且所有内部内存分配都是在内部完成的,而不会将其暴露给用户,但在您的情况下,m_exp的内部内存分配是向用户公开的。这可能会导致用户代码中的内存泄漏
相关文章:
- Problems with std::cin.fail()
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 这对"With a stackless coroutine, only the top-level routine may be suspended."意味着什么
- Boost.TEST with CLion: "Test framework quit unexpectedly"
- 避免碎片化的ClientHellos with OpenSSL (DTLS)
- Issues with Win32 ReadProcessMemory API
- 尝试构建"lock-free"数据结构C++
- Qt with WinAPI MouseProc
- [[maybe_unused]] with structured_binding?
- Issue with WriteProcessMemory
- OpenCV RTP-Stream with FFMPEG
- "Unable to start debugging. No process is associated with this object." - 在Visual Studio Code中使用GDB
- std::adjacent_difference with std::chrono time_point
- DLL Made with CMake 使程序崩溃
- QtCreator with C 库中的链接器问题
- SHBrowseForFolder with BIF_BROWSEFORCOMPUTER and SHGetPathFr
- 调用 free() 有时会导致程序崩溃
- specialized std::default_delete with QQmlComponent
- VS2019 - Sudo Remote Debugging on Linux with Cmake project
- Inference pytorch C++ with alexnet and cv::imread image