weixin_46754719 2023-04-23 11:29 采纳率: 0%
浏览 41

引发了异常: 读取访问权限冲突。 this 是 nullptr。

求指点,谢谢。

调试tetgen库时遇到问题

img


问题代码:

//// 头文件
class memorypool {

  public:

    void **firstblock, **nowblock;
    void *nextitem;
    void *deaditemstack;
    void **pathblock;
    void *pathitem;
    int  alignbytes;
    int  itembytes, itemwords;
    int  itemsperblock;
    long items, maxitems;
    int  unallocateditems;
    int  pathitemsleft;

    memorypool();
    memorypool(int, int, int, int);
    ~memorypool();
    
    void poolinit(int, int, int, int);
    void restart();
    void *alloc();
    void dealloc(void*);
    void traversalinit();
    void *traverse();
  };  

//// 函数
void tetgenmesh::memorypool::traversalinit()
{
  uintptr_t alignptr;
  // Begin the traversal in the first block.
  pathblock = firstblock;
  // Find the first item in the block.  Increment by the size of (void *).
  alignptr = (uintptr_t) (pathblock + 1);
  // Align with item on an `alignbytes'-byte boundary.
  pathitem = (void *)
    (alignptr + (uintptr_t) alignbytes -
     (alignptr % (uintptr_t) alignbytes));
  // Set the number of items left in the current block.
  pathitemsleft = itemsperblock;
}

//// 调用
void createtet()
{
    // 将点数据输入文件结构
    tetgenio in, out;

    // 创建 4 个节点的点数据
    int num_points = 4;
    double* points = new double[num_points * 3];

    // 设置节点坐标(这里假设节点坐标已知)
    points[0] = 0.0;
    points[1] = 0.0;
    points[2] = 0.0;
    points[3] = 1.0;
    points[4] = 0.0;
    points[5] = 0.0;
    points[6] = 0.0;
    points[7] = 1.0;
    points[8] = 0.0;
    points[9] = 0.0;
    points[10] = 0.0;
    points[11] = 1.0;

    // 将点数据赋值给 tetgenio 对象
    in.numberofpoints = num_points;
    in.pointlist = points;

    // 设置TETGEN现象和标志
    // 创建一个TetGen选项对象
    tetgenbehavior behavior;
    // 设置选项和标志
    behavior.quality = 1; // 设置质量约束
    behavior.minratio = 1.2; // 设置最小质量比率
    behavior.coarsen = 0; // 关闭网格简化

    // 调用TETGEN进行四面体化
    tetrahedralize(&behavior, &in, &out);
}
  • 写回答

1条回答 默认 最新

  • 於黾 2023-04-23 14:14
    关注

    traversalinit函数报错,你到是把相关代码放出来呀
    你放出来的代码里traversalinit函数根本都没有调用

    评论

报告相同问题?

问题事件

  • 修改了问题 4月23日
  • 创建了问题 4月23日

悬赏问题

  • ¥15 angular项目错误
  • ¥20 需要帮我远程操控一下,运行一下我的那个代码,我觉得我无能为力了
  • ¥20 有偿:在ubuntu上安装arduino以及其常用库文件。
  • ¥15 请问用arcgis处理一些数据和图形,通常里面有一个根据点划泰森多边形的命令,直接划的弊端是只能执行一个完整的边界,但是我们有时候会用到需要在有很多边界内利用点来执行划泰森多边形的命令
  • ¥30 在wave2foam中执行setWaveField时遇到了如下的浮点异常问题,请问该如何解决呢?
  • ¥750 关于一道数论方面的问题,求解答!(关键词-数学方法)
  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件