-1

为什么if在 Cygwin 中编译时该语句会导致分段错误?不过,通过 GCC 在 Linux 中编译是可行的。

经过一番研究,我发现这可能是由于struct int变量默认未初始化为 0 的事实?

但是,C 不是将所有全局变量和静态变量都初始化为 0 吗?这struct test是一个全局结构,为什么不初始化为 0 ?

int x;  
int count = 20;

struct test {
        int ID;
       };
       typedef struct test GG;
       GG *ptr[200];

    int main(int argc, char const *argv[])
    {
        for(x = 0; x<count; x++) {
            if(!(*ptr[x]).ID){
                printf("true\n");
            }
        }
        return 0;
    }
4

1 回答 1

3

GG *ptr[200];ptr 是指向 GG 类型结构的指针数组。您正在尝试访问这些没有任何内存位置的指针。

您需要为该数组的每个指针分配内存,如下所示 -

  for(x = 0; x<200; x++)
ptr[x] = malloc(sizeof(struct test));
于 2013-08-21T13:26:53.923 回答