在mex函数中重新分配数组

时间:2013-11-15 16:40:42

标签: c++ mex

在每次迭代的以下代码中,数组的大小增加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个元素。

0 个答案:

没有答案