C 分段错误

C 分段错误,c,C,所以,我被python宠坏了,我正试图再次学习C语言。 我得到了这个seg故障,我想我明白原因,但不知道为什么会发生 long head = 1; // atleast that is what I was hoping for.. long *localranks = (long*) malloc(n * sizeof(long)); // size_t n = 50; localranks[head] = 0; // seg fault here.. printf("head is %l

所以,我被python宠坏了,我正试图再次学习C语言。 我得到了这个seg故障,我想我明白原因,但不知道为什么会发生

long head = 1; // atleast that is what I was hoping for..
long *localranks = (long*) malloc(n * sizeof(long)); // size_t n = 50;
localranks[head] = 0; // seg fault here..


printf("head is %lu %d\n", head, head);
给出的头是4294967297 1

所以,头应该是1。。我猜,它正在被传递给那个垃圾值。。
如何修复此问题?

我完全无法复制它,但我怀疑如果seg故障是您所指的位置,那么原因可能是malloc故障,请尝试下面的代码,看看是否是这种情况

 long head = 1; // atleast that is what I was hoping for..
    long *localranks = (long*) malloc(n * sizeof(long)); // size_t n = 50;
    if( localranks == NULL ) {
        printf("malloc fail ");
        exit (0);
    }
    localranks[head] = 0; // seg fault here..
    printf("head is %lu %ld\n", head, head);

强制性警告:。至于实际的bug,您应该在问题行上设置一个断点,并检查head、n和localranks的值。@PaulR谢谢。。但是怎么做呢?要补充Paul的评论,请确保检查malloc的返回值。据我所见,malloc必须返回您试图访问的NULL。当n=1时,它可能会给出seg fault或UB。您的输出表明long head=1;不是你真正的代码。也许您有某种计算,您希望生成1,但实际生成的是4294967297。请张贴真实代码。我们没有水晶球。