好的,我正在c中創建一個向量數據結構(或動態列表)。 這裏是我的節點結構:嘗試訪問結構中的空指針時出現Segfault
struct vector_node{
void *value;
};
,這裏是我的矢量結構:
struct vector{
int size;
int capacity;
vector_node *start;
vector_node *end;
vector_node **nodes;
};
這裏是我如何創建和分配內存的向量:
vector* createVector(){
vector *vector = malloc(sizeof(vector));
vector->size = 0;
vector->capacity = 8;
vector->start = NULL;
vector->end = NULL;
vector->nodes = malloc(8*sizeof(vector_node));
int i = 0;
vector->nodes[0]->value = (int) &i;
}
最後兩條線就是我遇到麻煩的地方。似乎每當我嘗試初始化值變量,我遇到一個段錯誤。
'vector-> nodes [0]'是一個指針。它指向什麼? – immibis
'malloc(8 * sizeof(vector_node));'分配錯誤的字節數量(也是你的誤解的症狀)。 'vector_node **節點;'說節點'將指向一個包含** 8個指針**的數組。但是,您將malloc語句用於** 8個vector_nodes **的數組。 –