看看這個代碼:語言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」是一個Poly指針數組。 每當執行語句「A [heapSize-1] = key」(在if塊中)時,「key」的成員由於某種原因而改變爲「垃圾」值。例如,在該語句執行之前,「key」成員的值是5和6.執行此語句後,這些值將更改爲大約8位數的垃圾數字。誰能告訴我爲什麼?由於
感謝您的快速回復!我明白你的意思。事情是,我必須寫我的算法來「緩存高效」。我將在堆上分配結構的事實會影響我的系統是否更有效地使用緩存? – alguru