在每次迭代的以下代码中,数组的大小增加1 并且分配了该位置的元素。在ReallocArray中没有错误的内存分配 当执行在for循环中返回时,将显示bat内存分配并且崩溃。
有什么想法吗?
void ReallocArray(float* OutputArray, int NewCapacity){
if(!(OutputArray = (float*)mxRealloc(OutputArray, sizeof(float)*NewCapacity)))
mexErrMsgTxt("Out of Memory");
mexMakeMemoryPersistent(OutputArray);
mexPrintf("Memory allocation successful!\n");
}
void mexFunction(int nlhs, mxArray *plhs[], // output vars
int nrhs, const mxArray *prhs[]) // input vars
float* InputMatrix = (float*) mxGetData(prhs[0]);
float* LocalOutputData = NULL;
int LocalOutputDataSize = 0; //initial size
for ( int i = 0; i < 5; i++ ){
ReallocArray( LocalOutputData, ++LocalOutputDataSize );
LocalOutputData[ LocalOutputDataSize - 1 ] = InputMatrix[i];
}
return;
}
PS:当然InputMatrix
中有超过5个元素。