私のプロジェクトのアイデアは、いくつかの可能な結果を伴う反復実験で確率ツリーを構築することです。
これは非常に単純なプロジェクトであり、私はそれを正しく行ったと思います。これは基本的なツリー構築です。ノード値を決定し、子を初期化してから子を構築する構築再帰関数があります。
簡略化されたコード:
typedef struct Node {
int depth;
int noElements;
float probability;
struct Node *node0,*node1,*node4;
} Node;
void buildProbabilityTree(Node *node, int maxDepth) {
node->child1=malloc(sizeof node->child1);
//... set child1 values ...
buildProbabilityTree(node->child1,maxDepth);
node->child2=malloc(sizeof node->child2);
//... set child2 values ...
buildProbabilityTree(node->child2,maxDepth);
node->child3=malloc(sizeof node->child3);
//... set child3 values ...
buildProbabilityTree(node->child3,maxDepth);
}
int main(int argc, char *argv[]) {
Node root={0,0,1,NULL,NULL,NULL};
buildProbabilityTree(&root,3);
return EXIT_SUCCESS;
}
完全なコード (50 行のみ) http://pastie.org/private/cqiazmgp4bvexcidzlmutg
問題は: 動かない!
Codeblock と GNU gcc コンパイラを使用しています。ステップ ツー ステップ デバッグを実行すると、プログラムは問題なく終了します。しかし、デバッガーなしでビルドすると、確率ツリーの「底」に到達したときにプログラムがクラッシュします。
誰がそれがどこから来たのか知っていますか? Code::Blocks オプションでしょうか。コンパイラの問題?ありがとう。