我编写了一个产生以下错误的代码:
Thread 1: EXC_BAD_ACCESS (code=1, adress=0x7.....)
我希望该程序能够在一个结构内连接国家、州、城市和商店。但是当我尝试运行我的程序时,它给了我上面看到的错误。
我已经尝试删除 strcpy
和 for
但错误仍然发生。所以错误一定是在结构内部。我做错了什么?
#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;
}
最佳答案
该结构的大小为 69043124 字节,堆栈无法容纳。
由于无需考虑线程安全,因此可以将结构设为静态
:
int main(void) {
static struct country {
关于c - Xcode 中的访问错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32668960/