二维动态数组的分段故障(核心转储)

时间:2016-02-13 19:00:22

标签: c pointers segmentation-fault coredump

我正在编写一个程序,它从命令行中取一个数字,并找到所述数字的所有主要因素。我想收集指针数组中每个数字的素因子,以便每个指针指向输入的每个数字的每个特定的素数因子组。我目前正在进行分段故障核心转储,到目前为止我已经能够研究,我显然试图访问未分配内存或与NULL有关的地方指针。我在下面的代码中指出我发现了分段错误。我目前不知道如何继续,但我会继续寻找,但与此同时,如果对C有一点了解的人不会介意帮助我,那就是非常感激。最终我必须使用此代码并使其与pthreads一起使用。

`#include<stdlib.h>
 #include<stdio.h>
 #include<string.h>
 #include<pthread.h>`

 int main(int argc, char** argv){
    int **primeFactor = malloc((argc-1)*sizeof(int*));
    int i, j, counter, num, prime = 2;
    for(i = 1; i < argc; i++){
            counter = 0;
            num = atoi(argv[i]);
            printf("The number is: %d", num);
            primeFactor[i-1] = malloc((atoi(argv[i])/2)*sizeof(int));
            while(num > 1){
                    while(num % prime == 0){
                            num /= prime;
                            // Segmentation Fault
                      ==>   *primeFactor[i] = prime;
                            printf("\n%d is a factor", prime);
                    }
                    prime++;
            }
            prime=2;
    }
    printf("\n");
    return 0;
}

1 个答案:

答案 0 :(得分:1)

首先,您要为索引i-1创建第二个维度,但是在您指定的行上,您尝试访问索引i(您尚未创建索引) )。这就是你得到分段错误的原因。 ;)

希望这有帮助!

编辑:另外,不要忘记释放内存!

相关问题