c/c++语言开发共享Matlab是否会复制传递给mex函数的数据?

关于延迟复制:Matlab会不会复制传递给mexFunction的数据,这会修改它?

例如在

myMex(input1(:,:,ii), input2(:,:,ii)) 

可以肯定的是,输入矩阵永远不会被复制,所以人们可以通过并修改它,而不必返回引用?

    在某些情况下,MATLAB实现了一些优化,以避免在调用函数时复制数据。

    对于MEX函数,输入传递为const mxArray *prhs[]prhs是指向常量数据的指针数组)。 尽管可以在不进行复制的情况下更改输入变量(通过丢弃常量),但它很危险并且没有得到官方支持,并且可能产生意外结果甚至是段错误(基于写入时复制技术) )。 官方的答案是复制输入数组 ,并返回修改后的数组。

    如果您愿意使用未记录的function ,请参阅mxUnshareArray等。以下是Yair Altman撰写的一篇文章 ,详细解释了这一点。

      以上就是c/c++开发分享Matlab是否会复制传递给mex函数的数据?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/549396.html

      (0)
      上一篇 2021年1月14日
      下一篇 2021年1月14日

      精彩推荐