Matlab/C++混合编程时,Matlab System Error...

本文探讨了Matlab/C++混合编程时遇到的问题,特别是使用VS2010进行调试时偶尔出现的错误提示。文章通过具体示例分析了错误产生的原因,包括空指针和未分配内存等问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.

转载于:https://www.cnblogs.com/raby/p/5886701.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值