对mwArray格式的一点实用感触

mwArray与mxArray*是VC调用MATLAB程序中的两种数据类型,简单而言,当MATLAB使用deploytool生成dill文件时选择生成C++格式与C格式时会分别用到mwArray与mxArray*格式。

mwArray与mxArray*最本质的区别在于前者是一种包装类,后者是一种结构体。因此可以联想到mwArray的内存结构已被开发人员设计的很好,而mxArray则有更大的用户设计空间,因此使用mwArray更为方便。

extern LIB_sim_visual_CPP_API void MW_CALL_CONV sim_visual(const mwArray& num);

最直接的区别就在于mxArray用指针进行调用时用户需要考虑内存泄露问题,而mwArray每次调用完毕,一切申请的内存都会在析构函数中自动释放,不需要编程人员考虑。如下代码来自@c4501srsy的专栏

//----------对于mxArray:------------  
void fun()  
{  
……  
double d_a=1,d_b=2;  
mxArray *a,*b,*c;  
mlfEnterNewContext(0,0);  
mlfAssign(&a,mlfScalar(d_a));  
mlfAssign(&b,mlfScalar(d_b));  
mlfAssign(&c,mlfPlus(a,b));  
……  
mlfReleasePreviousContext(0,0);  
mxDestroyArray(a);  
mxDestroyArray(b);  
mxDestroyArray(c);  
}  
但是对于mwArray可以如此调用

	double num[1] = {1.0};
	sim_visualInitialize();
	mwArray dis_num(1,1,mxDOUBLE_CLASS);
	dis_num.SetData(num,1);
	//dis_num = 1;
	while(1)
		//sim_visual(dis_num);
		sim_visual(dis_num);


	sim_visualTerminate();
可以发现这样会方便很多。



c4501srsy的专栏

c4501srsy的专栏

你可能感兴趣的:(混合编程)