首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

内存出现泄漏,该怎么解决 生手老碰见这样的有关问题 多谢各位大神

2013-12-29 
内存出现泄漏,该如何解决 生手老碰见这样的问题谢谢各位大神void CTestsincplot11_dllView::OnButton32771

内存出现泄漏,该如何解决 生手老碰见这样的问题 谢谢各位大神
内存出现泄漏,该怎么解决 生手老碰见这样的有关问题  多谢各位大神

void CTestsincplot11_dllView::OnButton32771() 
{
// TODO: Add your command handler code here
if(pArrayIn==NULL)
{
pArrayIn=mxCreateDoubleMatrix(1,1,mxREAL);
}
*(mxGetPr(pArrayIn))=10*(0.3+0.7*rand()*1.0/RAND_MAX);//  出现错误 
mlfSincplot(1,&pArrayOut,pArrayIn);
CDC*pDC=GetDC();
int i=0;
int j=0,k=0;
CString testStr;
for(i=0;i<mxGetNumberOfElements(pArrayOut);i++)
{
testStr.Format("%6.2f",*(mxGetPr(pArrayOut)+i));
pDC->TextOut(5+j*40,5+k*15,testStr);
j++;
if(j>20)
{
j=0;
k++;
}
}

}
这是我和matlab混编的调用代码

[解决办法]
LZ遇到的问题的关键是在执行以下语句:
*(mxGetPr(pArrayIn))=10*(0.3+0.7*rand()*1.0/RAND_MAX);
之前pArrayIn必须有一个合法的值.

可查一下以下语句:
pArrayIn=mxCreateDoubleMatrix(1,1,mxREAL);
是否执行了,如果执行后pArrayIn还是NULL,可试一下在程序开头加mclInitializeApplication(NULL,0).

还要注意C程序的平台解决方案与MATLAB库是否都是win32或都是x64。如果不一致要出错。

以下用LZ的几行代码做的小程序运行正常:

#include <stdio.h>
#include "mex.h"
#include "mclmcrrt.h"

int main()
{
  mxArray *pArrayIn=NULL;

  mclInitializeApplication(NULL,0); 
  if(pArrayIn==NULL)
  {
    pArrayIn=mxCreateDoubleMatrix(1,1,mxREAL);
  }
  *(mxGetPr(pArrayIn))=10*(0.3+0.7*rand()*1.0/RAND_MAX);

  mclTerminateApplication();
  return 0;
}

热点排行