Closed. This question needs details or clarity。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?添加详细信息并通过editing this post阐明问题。
                        
                        4年前关闭。
                                                                                            
                
        
我正在编写一个程序,该程序从命令行获取一个数字,并找到该数字的所有主要因素。我想在一个指针数组中收集每个数字的质因数,以便每个指针将针对输入的每个数字指向每个特定的质数组。我目前正在遇到分段错误核心转储,并且根据到目前为止的研究,我似乎正在尝试访问未分配内存或与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;
}

最佳答案

事实是,您首先为索引i-1创建第二个维度,但是在指定的行上,尝试访问索引i(尚未创建)。这就是为什么您会遇到细分错误。 ;)

希望这可以帮助 !

编辑:另外,别忘了释放内存!

09-20 01:47