我對C有點精通,我認爲我有指針都想通了,直到我遇到了這個問題。我正在創建一個數組實現的結構體堆棧。很簡單,但當我的結構包含一個動態分配的數組時,我遇到了一個問題。每個包含動態數組的結構數組
的結構是:
typedef struct state {
int* S;
double prob;
} state_t;
現在說我希望創建的那些結構體10中,每個陣列具有一個整數數組的說5點的整數。我可以分配該數組爲:
state_t *newContents;
newContents = (state_t *)malloc((sizeof(state_t) + 5 * sizeof(int)) * 10);
,我能創造一個struct在第一槽去:
state_t *root = malloc(sizeof *root + 5 * sizeof(int));
root->prob = 1.0;
root->S[0] = 3;
root->S[1] = 5;
root->S[2] = 7;
root->S[3] = 2;
root->S[4] = 0;
newContents[0] = *root;
但是,當我嘗試添加第二個結構,賽格故障。這是因爲數組索引的方式是沒有int數組的結構體的大小,這意味着每個條目的長度爲16個字節 - 8個爲指針的雙8個。我希望它可以通過28-8的雙精度和4×5精度進行索引。有沒有人知道一種方法來正確訪問此數組的元素?
謝謝!
你是否檢查'root's件的內容,您assigend值後他們?尤其要檢查'prob'的值! – alk