は、このコードを見てみましょう:言語C:代入文がデータを破壊するのはなぜですか?
void insert(Poly **A, int degree, int coef2) {
heapSize = heapSize+1;
Poly *key;
if (heapSize == 1) { // heap was originally empty
key->coef = coef2;
key->degree = degree;
A[heapSize-1] = key;
return;
}
// create an "minus infinity" degree poly
int keyDegree = degree;
key->coef = coef2;
key->degree = MIN_INT;
A[heapSize-1] = key ;
heapIncreaseKey(A, heapSize-1, keyDegree);
}
ポリは、そのメンバーint型の両方がある構造体です。 "A"はポリポインタの配列です。 "A [heapSize-1] = key"(ifブロック内)の文が実行されるたびに、何らかの理由で "key"のメンバーが "junk"値に変わります。例えば、その文が実行される直前に、 "key"のメンバの値は5と6になります。この文が実行されると、値は8桁のジャンク番号に変わります。なぜ誰かが私に言うことができますか?ありがとう
お返事ありがとうございます!何が言いたいのか理解した。問題は、私はアルゴリズムを "キャッシュ効率"にする必要があるということです。ヒープ上に構造体を割り当てるという事実は、私のシステムがより効率的にキャッシュを使用するかどうかに影響しますか? – alguru