C++ 调用MATLAB引擎 在memcpy处报错,解决方案

在C++中使用MATLAB引擎进行数值计算时遇到内存越界问题,原因是MATLAB引擎未初始化导致mxCreateDoubleMatrix返回NULL。解决方案是在创建矩阵前初始化引擎,并将memcpy替换为更安全的memcpy_s以优化调试。
摘要由CSDN通过智能技术生成

在用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, 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值