为什么我在C / MEX中有内存泄漏?

1246

我完全是C / MEX的初学者。这是用于从MATLAB调用“魔术”函数的简单代码。我不知道为什么会收到“内存不足”消息。

#include <mex.h>
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
    #define A_IN prhs[0]
    #define A_OUT plhs[0]
    mxArray *R;
    R=mxCreateDoubleMatrix(A_IN,A_IN,mxREAL);
    mexCallMATLAB(1, R, 1, &A_IN, "magic");
    A_OUT = mxDuplicateArray(R);
    mxDestroyArray(R);
    return;
}
托马斯·鲁伊斯

A_OUT似乎是的重复项R基本上,根据文档(问任何问题之前应该先读一下,只是说':)),正在创建一个new array调用此函数将分配更多的内存来存储此副本。

因此泄漏是来自A_OUT您可以使用valgrind工具来帮助您找到这些,并带有选项--leak-check=full当然,使用编译器的调试标志(-g3对于gcc进行编译,它将为您提供修复泄漏所需的大多数信息。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我在EOutOfResources中泄漏内存?

C ++我有内存泄漏吗?

Java内存之谜(我有泄漏)吗?

我有内存泄漏吗?(nodejs)

为什么我的并行遍历Haskell程序会泄漏内存?

为什么我的Go服务器内存泄漏?

为什么我在这里出现内存泄漏?

为什么我的程序会出现内存泄漏?

为什么/我的代码如何导致内存泄漏?

为什么这是内存泄漏

为什么这是内存泄漏

为什么不给内存泄漏?

为什么我的链接泄漏?

为什么我们在C / C ++中有两种库?

为什么这个C程序不能让我访问内存?

为什么我超出了内存限制?C#

为什么没有内存泄漏:@property(copy)NSString *名称,当我不在dealloc中释放它时?

为什么我的Java应用程序(没有内存泄漏)随着时间的推移变得越来越慢

为什么这不是C ++中的内存泄漏?

为什么以下C ++代码中发生内存泄漏?

c malloc,为什么我的数组中有随机数?

为什么我的 C++ 编译的 Windows .exe 中有 .h 源代码?

以下 c++ 代码在 leetcode 中有效,但在我的 vscode 中无效,为什么?

为什么我在 xcode 上的 C 代码中有一个“期望表达式”?

尽管在程序中的某个位置使用了free(),但是为什么我的程序仍在C中泄漏内存?

为什么我的 C# 代码没有正确中断?

为什么我的sed命令没有调出变量c?

为什么没有输入我的C#for循环?

为什么我的C#对象没有实例化?