在用C++调用MATLAB做数值计算的时候,遇到了内存越界报错
...
y1 = mxCreateDoubleMatrix(1, N, mxREAL);
memcpy((void*)mxGetPr(y1), (void*)y, N*sizeof(double));
代码如上,光看这一句似乎没什么问题,花了半天功夫才找到原因:MATLAB引擎没有初始化
mxCreateDoubleMatrix(1, N, mxREAL);这一句返回的是NULL
解决方案:
在创建矩阵之前先初始化引擎
mclInitializeApplication(NULL, 0);
...
y1 = mxCreateDoubleMatrix(1, N, mxREAL);
memcpy((void*)mxGetPr(y1), (void*)y, N*sizeof(double));
还可以改进的是:将memcpy改成memcpy_s
mclInitializeApplication(NULL,