【问题标题】:LLDB error, what can I do? [duplicate]LLDB 错误,我该怎么办? [复制]
【发布时间】:2015-08-10 15:25:04
【问题描述】:

使用 xcode 5.1.1,它在 'printf("digite o %i horário :",i+1);' 行显示消息 Thread 1:EXC_BAD_ACESS(code=1,adress=0x7ffae2c04c48)

有人对此有任何想法吗?我试图停用 lldb,但它不起作用。

#include <stdio.h>

int main (){

    struct hora {
        int h;
        int m;
        int s;
    };

    int i, a;

    struct hora lista[i];

    for (i = 0; i<5; ++i) {
        printf("digite o %i horário :",i+1);
        scanf("%i:%i:%i",&lista[i].h,&lista[i].m,&lista[i].s);
    }
    for (a=0; a<5; ++a){
        printf("o horário %i é %i:%i:%i", a+1,lista[a].h,lista[a].m,lista[a].s);
    }
    return 0;
}

【问题讨论】:

  • i 在此处未初始化:struct hora lista[i]; 它具有不确定的值并导致未定义的行为

标签: c xcode lldb


【解决方案1】:

您的代码显示undefined behaviour.,如语句中所示

 struct hora lista[i];

您正在使用 i 未初始化。

详细地说,i 是一个自动存储类型的局部范围变量,它不会被隐式初始化。除非显式初始化,否则i 的内容是不确定的。因此使用该值是 UB。

你可能想把它改成

 struct hora lista[5];

使其正确。

也就是说,作为注释,在 C 标准中不建议使用 int main(),请使用 int main(int argc, char * argv[]) 或至少使用 int main(void)

【讨论】:

    猜你喜欢
    • 2012-04-14
    • 2021-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-23
    • 1970-01-01
    • 2013-03-01
    相关资源
    最近更新 更多