调用drawow会导致堆损坏

时间:2018-02-07 03:59:52

标签: c++ c matlab simulink

我还是Matlab和Simulink的新手,我看到了一个奇怪的问题。

我有一系列Simulink块(processA,processB等),它们是串行连接的Matlab函数。它们都具有相同的格式。

function outConfig = run_processA_Fcn(inConfig)

coder.extrinsic('hilite_system');
hilite_system('myModel/processA');
drawnow;

coder.extrinsic('run_processA_mex');
run_processA_mex(inConfig);

hilite_system('myModel/processA', 'none');
drawnow;

outConfig = inConfig;

函数run_processA_mex()是一个.mexw64 MEX函数,它接收指向堆的指针(通过inConfig)。在这些MEX函数中,我调用我的Visual Studio编译的C代码(在DLL中)。

每个Simulink块可能需要一些时间来处理,所以我希望它突出显示当前块。问题是当我调用drawow时,指针中的数据会变为某些无效值。指针本身指向同一个地址,只是它们指向的值是错误的。如果我只是注释掉了drawow,我的数据就可以了。

我不清楚最好的方法。我不知道为什么调用drawow会破坏我的堆。任何帮助都会很棒。

1 个答案:

答案 0 :(得分:0)

好的,这对我很愚蠢。我传递的指针指向堆,但它们是指针的指针。最后的数据是在堆栈上,所以由于我引入了额外的函数调用,我丢失了这些数据。

我已经将数据正确地分配到堆上,现在似乎正在运行。