Matlab/C++混合编程时,出现:
Matlab has encountered an internal problem and needs to close.
The unsaved information you were working on may be lost. We are sorry for the inconvenience.
Click End Now to close Matlab now.
…
….
使用VS2010在mexFuntion.cpp文件中设置断点调试时,有时会报错,有时候又可以通过。就有可能会出现这样的情况:使用mex指令对mexFuntion.cpp编译后,在matlab程序中调用该函数,第一次执行时,程序不报错,当在执行第二次时,就会报错。
报错的原因就是,如:空指针,变量为分配内存而使用….
例如:
vector<int> vec;
vec[0]=1;//error, 未分配内存。
vec[1]=2;
mxArray *ptr=mxGetField(prhs[0],0,'name');
//if ptr==NULL或者0
char *strName=mxArrayToString(ptr);
typedef struct person
{
int age;
char name[10];
}Person;
typedef struct man
{
int sex;
Person *p;
}Man;
Man* pMan=(Man *)malloc(sizeof(Man));
//use pMan
pMan->p->age=10;//error,变量age没有分配内存.可以将Man中的成员Person *p改为Person p.