我对我的结构有以下定义:
typedef struct{
char name[100];//the probleme is here
char type[100];//and here
int quantity;
} product;
typedef struct{
int dim;
product produs[100];
} ceva1;
typedef struct{
int dim;
ceva1 produs[1000];
} ceva;
在主要我有此代码:
int main(){
ceva *pointer,obiect;
pointer=&obiect;
test1(pointer)
obiect.dim=0;
return 0;
}
当我尝试运行该程序时,出现错误消息“ c.exe停止工作”。
我已经看到,如果删除objiet,该错误将消失,但是我有一个函数,当我调用该函数时,该错误再次出现。怎么了?
void test1(ceva *pointer){
pointer->produs[0].produs[0].quantity=1;
}
最佳答案
让我们注意sizeof(ceva) > 20000000
,因此您可能会耗尽堆栈空间。相反,您可以在堆上分配数据:
int main(){
ceva *data = malloc(sizeof(ceva));
test1(data);
free(data);
return 0;
}