标题:程序Segmentation fault的问题
只看楼主
cyy06180521
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2015-8-21
得分:0 
回复 9楼 小王KING
懂了,谢谢指教
2015-09-10 10:49
hengde_li
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:131
专家分:178
注 册:2010-1-15
得分:2 
回复 楼主 cyy06180521
估计你输入的n值大了,如果n大的话,需要分配内存,用malloc,我以前遇到很多segmentation fault,都是因为内存问题。
2015-09-10 11:03
cyy06180521
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2015-8-21
得分:0 
回复 8楼 林月儿
谢谢大神,向大神学习
2015-09-10 11:05
hengde_li
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:131
专家分:178
注 册:2010-1-15
得分:0 
#include <stdlib.h>   /* 增加 部分,该库有malloc函数 */
#include <stdio.h>
#include <math.h>

int main(void) {
    int n, m, sum = 0;
   
    int * a = (int *)malloc(sizeof(int)*n); /*分配内存*/
 
    double average;
   
    printf("Enter n: ");
    scanf("%d", &n);
    printf("Enter numbers:\n");
   
    for(m = 0; m < n; m++){
        printf("Enter %d #:",m+1);   
        scanf("%d", &a[m]);
        sum+=a[m];
    }
   
    average = 1.0*sum / n;
    printf("average = %g\n", average);
   
    free(a);/* 释放内存*/
   
    return 0;
}
2015-09-10 11:09
jklqwe111
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:35
帖 子:335
专家分:1125
注 册:2014-4-13
得分:0 
回复 14楼 hengde_li
#include <stdlib.h>   /* 增加 部分,该库有malloc函数 */
#include <stdio.h>
#include <math.h>

int main(void) {
    int n, m, sum = 0;
   
    int * a = (int *)malloc(sizeof(int)*n); /*分配内存// "此时n的值未知,怎么分配内存,这一句是不能通过编译的,假如能编译那么这个编译器该淘汰,改为int * a =NULL 等n值确定后再分配内存"*/

    double average;
   
    printf("Enter n: ");
    scanf("%d", &n);
    a = (int *)malloc(sizeof(int)*n)//此时n已确定,可分配内存
    printf("Enter numbers:\n");
   
    for(m = 0; m < n; m++){
        printf("Enter %d #:",m+1);   
        scanf("%d", &a[m]);
        sum+=a[m];
    }
   
    average = 1.0*sum / n;
    printf("average = %g\n", average);
   
    free(a);/* 释放内存*/
   
    return 0;
}
2015-09-10 12:28



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-457138-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.061714 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved