2012-11-17 48 views
0

所以我创建了一个结构,其唯一的元素是一个指向数组的指针。当我初始化这个数组时,我得到了一个分段错误。你能告诉我为什么吗?结构内的数组

下面是代码:

typedef struct { 
    int *data; 
} A; 

/* Class definition */ 
class C { 
    A* a; 
public: 
    C(void); 
}; 

/* Constructor */ 
C::C(void) { 
    a->data = new int[10]; 
} 

int main(void) { 
    C(); 
} 

谢谢!

回答

7

因为类C包含指向A的指针,该指针尚未初始化。所以在这个阶段没有a->data初始化。

另外,您的struct A不包含“指向数组的指针”,它包含指向int的指针。它不一定要被初始化为指向一个动态分配的数组:

int n = 42; 
A a; 
a.data = &n; 

而且,你的A声明是在C++中有些不寻常,并与的class C不一致。通常使用这种形式:

struct A { 
    int* data; 
}; 
+0

哦,我明白了,谢谢:) –