void insert_KD_tree(noKD **tree, Queue *queue, int counter) {
if ((*tree)!=NULL) {
*tree = new_KD_node(queue->first->pointer,NULL,NULL);
}
else if (((*tree)->pointer[counter]) > (queue->first->pointer[counter])) {
counter++;
insert_KD_tree(&(*tree)->left,queue);
}
else {
counter++
insert_KD_tree(&(*tree)->right,queue,counter);
}
pop(queue);
}
わかりました、これは基本的に二分木挿入関数ですが、ノードに配列を挿入するためのものです。配列はキューに格納されていますが、ポインターへのポインターに問題があります。gdb を使用して配列にアクセスしようとすると、メモリの場所にアクセスできないというメッセージが表示されますが0x10
、別の関数でアクセスしようとすると、場所が問題なく表示され、配列にアクセスできます。
問題はポインターからポインターへのポインターであることに気付きました。 を呼び出すときにアスタリックを 1 つだけ配置するとinsert_KD_function
、プログラムは問題なく tree->pointer にアクセスできます。したがって、問題はポインターへのポインターに関係しており、何らかの方法でポインター参照が失われています。
誰でも私を助けることができますか?