我正在用c ++编写一个dll,它将向调用的VB可执行文件返回一个大的多维双精度数组。首先,它将是3维,但最终会增加到11维。
应该怎么做? 我只是假设在堆栈上分配是一个坏主意。
我想象这将按如下方式完成(3D案例):
__declspec(dllexport) double __stdcall ***funcRet3Darr(double var1, double *var2, int dim1, int dim2, int dim3)
{
double ***retarr = new double **[dim1];
for (int i = 0; i<dim1; i++)
{
retarr[i] = new double *[dim2];
for (int j = 0;j<dim2; j++)
retarr[i][j] = new double [dim3];
}
// code to fill the values in retarr
return retarr;
}
但是(问题2):在dll中创建的指针retarr
会发生什么?如果多次调用c ++函数,它会成为内存问题吗?是否需要在dll函数中删除? (怎么会这样做?)