我正在尝试使用mex文件为现有应用程序创建matlab接口。 我已成功创建 * .mexa64文件,并且还能够运行一次/两次可执行文件。 但是如果我连续两次执行它会给我分段错误和matlab崩溃。
我添加的代码段如下所示。
void mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[])
{
argc=nrhs+1;
argv=new char*[argc];
int i,j;
argv[0]=new char[(strlen("./learnwts")+1)*sizeof(char)];
strcpy(argv[0],"./learnwts");
for(i=0;i<nrhs;i++)
{
j=i+1;
argv[j]=new char[(mxGetN(prhs[i]) + 1)*sizeof(char)];
mxGetString(prhs[i], argv[j], mxGetN(prhs[i]) + 1);
}
我还创建了一个mexatexit函数来删除通过new operator
分配的内存void cleanup()
{
for(i=0;i<argc;i++)
{
delete[] argv[i];
}
delete[] argv;
}
我无法弄清楚错误。 有没有人遇到过这个?任何人都可以帮我找出我犯的错误吗?