3

複数のグラフを作成する必要がある小さな C プログラムを作成しています。これらのグラフのドットは文字列になっているため、agmemread代わりに使用していますagread(一時ファイルの作成を避けたい)。agmemreadただし、複数回呼び出すと壊れるようです。

次の例では "error2" が出力されるため、2 回目の呼び出しで失敗します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;
}

実際の例では、もちろん、これらのセクションの間にさらにコードがいくつかあります。

2 回目に agmemread を呼び出す前に、何かを解放またはクローズする必要がありますか? それともgraphvizのバグですか?graphviz: stable 2.30.1, devel 2.31.20130523.0446Mac OS Xで使用しています。

代わりの同じ例agreadは魅力のように機能します。

4

2 に答える 2

1

各グラフの終了「}」の後に「\n」を追加すると、問題が解決します。なぜこれが必要なのか、構文的にはまだ調査中です。

于 2013-06-13T21:22:24.107 に答える