gpt4 book ai didi

c - 为什么我在 C/MEX 中出现内存泄漏?

转载 作者:行者123 更新时间:2023-11-30 17:48:40 26 4
gpt4 key购买 nike

我在 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 的重复。基本上按照doc (在提出任何问题之前你应该阅读它,只是说':)),正在创建一个新的数组。调用此函数将分配更多内存来存储此副本。

所以泄漏来自A_OUT。您可以使用 valgrind 工具通过选项 --leak-check=full 来帮助您查找这些内容。当然,使用编译器的调试标志进行编译(gcc-g3),它将为您提供修复泄漏所需的大部分信息。

关于c - 为什么我在 C/MEX 中出现内存泄漏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18444524/

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