3

我正在创建一个需要创建多个图形的小型 C 程序。这些图的点在一个字符串中,所以我使用agmemread而不是agread(我想避免创建临时文件)。agmemread但是,多次调用时似乎会中断。

以下示例输出“error2”,因此第二次调用时失败agmemread

#include <gvc.h>

int main() {
  Agraph_t *g1 = agmemread("graph testgraph {\n\n}");

  if (!g1) {
    printf("error1\n");
    return 1;
  }

  agclose(g1);

  Agraph_t *g2 = agmemread("graph testgraph {\n\n}");

  if (!g2) {
    printf("error2\n");
    return 1;
  }

  agclose(g2);
  return 0;
}

在现实生活中的例子中,这些部分之间当然会有更多的代码。

在第二次调用 agmemread 之前,我是否需要释放或关闭任何东西?或者它是graphviz的一个错误?我graphviz: stable 2.30.1, devel 2.31.20130523.0446在 Mac OS X 上使用。

相反,同一个例子agread就像一个魅力。

4

2 回答 2

2

这是 agmemread() 中的一个错误。从 2013 年 6 月 18 日开始,该修复程序应出现在程序包中。感谢您的报告。

于 2013-06-17T21:46:48.570 回答
1

在每个图形的结束“}”之后添加“\n”可以解决问题。从语法上讲,我仍在调查为什么需要这样做。

于 2013-06-13T21:22:24.107 回答