【问题标题】:terminated by signal SIGSEGV (Address boundary error)由信号 SIGSEGV 终止(地址边界错误)
【发布时间】:2016-11-30 20:36:27
【问题描述】:

我试图先向用户查询一些输入,然后用该数量的输入填充动态列表。然后以相反的顺序打印它们。出于某种原因,我收到 SIGSEGV 错误,但找不到任何无限循环或地址错误。帮我找出问题所在。

#include <stdio.h>
#include <stdlib.h>

int main() {
    int input;
    printf("Enter a non-negative number: ");
    scanf("%d", &input);

    int *listA;
    listA = (int*)malloc(sizeof(int[input]));
    printf("Now, enter %d non-negative numbers: ", input);
    for (int i = 0; i < input; i++) {
        scanf("%d", listA[i]);
    }
    printf("In reverse order, your input is: ");
    for (int i = input-1; i >=0; i-- ) {
        printf("%d",listA[i]);
    }
    free(listA);
    return 0;
}

【问题讨论】:

    标签: c segmentation-fault dynamic-list


    【解决方案1】:

    尝试在启用所有警告的情况下编译您的代码(-Wall 和 gcc)。您的线路:

    scanf("%d", listA[i]);
    

    应该是:

    scanf("%d", &listA[i]);
    

    【讨论】:

      猜你喜欢
      • 2017-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-26
      • 1970-01-01
      相关资源
      最近更新 更多