关于延迟复制: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