我正在写一个S函数,它输出一个布尔数组(4个位置)
我在mdlOutputs回调中写入输出时遇到访问内存冲突。
这个错误不是一成不变的。我的意思是:代码运行良好,直到它崩溃,Matlab给出一个致命的错误。我很确定错误是在memcpy操作中,因为我已经调试过,在我评论这行代码之后,它运行正常。此外,如果数据类型是标量,它会100%运行。
所以,我有几个问题:
伪代码在这里:
static void mdlOutputs ( SimStruct* S, int_T tid ) {
(...)
//src variable defined here
(...)
void* dst;
// get output port data type id
type = ssGetOutputPortDataType ( S, i ); // type = SS_BOOLEAN
// get data type size
size = ssGetDataTypeSize ( S, type ); //size = 1 byte
// get output port signal pointer
dst = ( void* ) ssGetOutputPortSignal ( S, i ); //dst has a valid value
// get output port width
width = ssGetOutputPortWidth ( S, i ); //width is 4, since it is a 4 position array
size = size * width; // size now is 4
memcpy ( dst, src, size ); // Error
}