Xcode中的访问不良

时间:2015-09-19 13:47:18

标签: c xcode struct xcode7 strcpy

我写了一个产生以下错误的代码:

  

线程1:EXC_BAD_ACCESS(代码= 1,地址= 0x7 .....)

我希望该计划将结构中的国家,州,城市和商店联系起来。但是当我尝试运行我的程序时,它会给我上面看到的错误。

我已尝试删除strcpyfor,但错误仍然存​​在。所以错误必须在结构内。我做错了什么?

#include <stdio.h>
#include <string.h>

#define SMAX 16
#define CMAX 256
#define SHMAX 300

int main() {
    struct country {
        char cname[50];
        struct state {
            char sname[50];
            struct city {
                char cityname[50];
                struct shop {
                    char shopname[50];
                    int countshop;
                } shop[SHMAX];
                int countcity;
            } city[CMAX];
            int countstate;
        } state[SMAX];
    } country;

    // country = Germany;

    strcpy(country.state[0].sname, "bayern");
    strcpy(country.state[1].sname, "berlin");
    strcpy(country.state[0].city[0].cityname, "ingolstadt");
    strcpy(country.state[0].city[0].shop[0].shopname, "westpark");
    strcpy(country.state[0].city[0].shop[1].shopname, "edeka");

    for (int i = 0; i < SHMAX; i++) {
        printf("%s\n", country.state[0].city[0].shop[i].shopname);
    }



    return 0;
}

1 个答案:

答案 0 :(得分:2)

结构的大小是69043124字节,这太大而不适合堆栈。

由于线程安全无关紧要,可以将结构static

int main(void) {
    static struct country {