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();
}

谢谢!

4

1 回答 1

7

因为 classC拥有一个指向 an 的指针A,该指针尚未初始化。a->data所以在那个阶段没有初始化。

顺便说一句,您的结构A不包含“指向数组的指针”,它包含指向int. 它不一定必须初始化为指向动态分配的数组:

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

此外,您的声明A在 C++ 中有些不寻常,并且与class C. 通常使用这种形式:

struct A {
  int* data;
};
于 2012-11-17T09:12:35.443 回答