【发布时间】:2017-05-29 02:19:59
【问题描述】:
我正在尝试动态创建一个 structs 数组。尽管小尺寸似乎可以正常工作,但程序稍后会崩溃(分段错误)。当 ipt_size 很大时,它会很快被无意义的数字压碎,所以我认为问题出在我分配数组的方式上。
int create_ipt(int ipt_size,frame **ipt){
int i;
*ipt=malloc(ipt_size*sizeof(frame*));
for(i=0;i<ipt_size;i++){
ipt[i]=malloc(sizeof(frame));
if (ipt[i]==NULL) return 1; //error
ipt[i]->empty=1;
}
return 0; //success
}//create page table
我用
调用函数 frame *ipt;
create_ipt(ipt_size,&ipt);
你知道发生了什么吗?框架内有 3 个整数
【问题讨论】:
-
*ipt=malloc(ipt_size*sizeof(frame*));-->*ipt=malloc(ipt_size*sizeof(frame));..if (*ipt==NULL) return 1; for(i=0;i<ipt_size;i++){ (*ipt)[i].empty=1; } -
谢谢你。就是这样。添加您的评论作为答案,使其变为绿色:)
标签: c arrays pointers struct dereference