C++ 在mex函数中重新分配数组

C++ 在mex函数中重新分配数组,c++,mex,C++,Mex,在下面的代码中,在每次迭代中,数组的大小增加一个 并在该位置分配一个元素。在ReallocArray中,没有错误的内存分配 当执行返回for循环时,会出现一个bat内存分配,它会崩溃 有什么想法吗 void ReallocArray(float* OutputArray, int NewCapacity){ if(!(OutputArray = (float*)mxRealloc(OutputArray, sizeof(float)*NewCapacity))) mex

在下面的代码中,在每次迭代中,数组的大小增加一个 并在该位置分配一个元素。在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;
}
void ReallocArray(float*OutputArray,int NewCapacity){
如果(!(OutputArray=(float*)mxRealloc(OutputArray,sizeof(float)*NewCapacity)))
mexErrMsgTxt(“内存不足”);
MexMakeMemoryPersist(输出阵列);
mexPrintf(“内存分配成功!\n”);
}
void-mexFunction(int-nlhs,mxArray*plhs[],//输出变量
int nrhs,const mxArray*prhs[])//输入变量
浮点*输入矩阵=(浮点*)mxGetData(prhs[0]);
float*LocalOutputData=NULL;
int LocalOutputDataSize=0//初始尺寸
对于(int i=0;i<5;i++){
ReallocArray(LocalOutputData,++LocalOutputDataSize);
LocalOutputData[LocalOutputDataSize-1]=InputMatrix[i];
}
返回;
}

PS:当然,
InputMatrix

中有5个以上的元素,无论如何,我认为需要一个参考<代码>void ReallocArray(float*&OutputArray,int NewCapacity)我假设这是学术性的,因为没有理由为了一个简单的拷贝而这样扩展数组。谢谢chappjc,我想我找到了它。是的,这是学术性的,被引用者修正了,嗯?哎呀!)是的,我现在就核实一下。对不起,打扰了。