有关mdlBspline_oneRailTwoSectionSweep函数的具体使用细节

本人想通过使用mdlBspline_oneRailTwoSectionSweep函数使用沿一轨迹两轮廓延展曲面,但测试时一直出现内存相关问题,因此想询问一下该函数的具体使用细节,以下是测试该函数时代码片段:

//测试函数mdlBspline_oneRailTwoSectionSweep
MSElement path, section0, section1;
MSBsplineCurve pathC, section0C, section1C;
MSElementDescrP edP(0);

//path取直线(0,0,0),(0,0,1000)
DPoint3d pts[2];
pts[0].x = pts[0].y = pts[0].z = pts[1].x = pts[1].y = 0;
pts[1].z = 1000;
mdlLine_create(&path, NULL, pts);
mdlElmdscr_new(&edP, NULL, &path);
mdlBspline_convertToCurve(&pathC, edP);
mdlElmdscr_add(edP);
mdlElmdscr_freeAll(&edP);

//根据放样轨迹求出起点&终点的切线向量
DVec3d vec0, vec1;
DPoint3d tmpPt[2];
//起点
mdlBspline_evaluateCurvePoint(&tmpPt[0], &tmpPt[1], &pathC, 0);
mdlVec_computeNormal(&vec0, &tmpPt[1], &tmpPt[0]);
//终点
mdlBspline_evaluateCurvePoint(&tmpPt[0], &tmpPt[1], &pathC, 1);
mdlVec_computeNormal(&vec1, &tmpPt[1], &tmpPt[0]);

//分别画两个圆经过起终点
DPoint3d ptc1[3] = {{0,0,0},{1000,1000,0},{2000,0,0}};
DPoint3d ptc2[3] = {{0,0,1000},{1000,1000,1000},{2000,0,1000}};

mdlCircle_createBy3Pts(&section0, NULL, ptc1, 0);
mdlElmdscr_new(&edP, NULL, &section0);
mdlBspline_convertToCurve(&section0C, edP);
mdlElmdscr_add(edP);
mdlElmdscr_freeAll(&edP);

mdlCircle_createBy3Pts(&section1, NULL, ptc2, 0);
mdlElmdscr_new(&edP, NULL, &section1);
mdlBspline_convertToCurve(&section1C, edP);
mdlElmdscr_add(edP);
mdlElmdscr_freeAll(&edP);

//调用mdlBspline_oneRailTwoSectionSweep函数

MSBsplineSurface surfaceLoft;
mdlBspline_oneRailTwoSectionSweep(&surfaceLoft, &pathC, &section0C, &section1C, &vec0, &vec1, 0.01);

mdlBspline_createSurface (&edP, NULL, &surfaceLoft);
mdlElmdscr_add(edP);
mdlElmdscr_freeAll(&edP);