请问一个二维结构数组大小的问题

edtaylcamel 2003-10-21 08:54:12
代码:
struct arr{
int x;
int y;
};
arr xy[500][500];

for(int m=0;m<500;m++)
{
for(int j=0;j<500;j++)
{
xy[m][j].x=0;
xy[m][j].y=0;
fprintf(fpcoordinates,"(%d,%d)\n",xy[m][j].x,xy[m][j].y);
}
}

我定义了一个500×500的结构数组,但是不能执行,出现错误,在build时没有错,在execute时就出错。不知道为啥,是不是数据分配内存有限制啊,那我要是用到大的数组有没有好的办法啊?
谢谢
...全文
40 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
edtaylcamel 2003-10-21
  • 打赏
  • 举报
回复
我用了一个新的的方法实现:
//申请内存
XY *xy;
assert((xy=new XY[770*919])!=NULL);

if(xy==NULL)
{
printf("error in malloc ");
return;
}
//初始
for(int m=0;m<770;m++)
{
for(int j=0;j<919;j++)
{
xy[m*770+j].x=231738;
xy[m*770+j].y=406301;
}
}
//计算
for(int i=0;i<770;i++)
{
for(int j=0;j<919;j++)
{
xy[i*770+j].x+=25*i;
xy[i*770+j].y+=25*j;

fprintf(fpcoordinates,"(%d,%d)\n",xy[i*770+j].x,xy[i*770+j].y);
}
}
//释放
if(xy!=NULL)
{
delete [] xy;
xy=NULL;
}
policyend 2003-10-21
  • 打赏
  • 举报
回复
fpcoordinates
这个是什么东西?
zhengguoshan 2003-10-21
  • 打赏
  • 举报
回复
可以是内存需要的太大了吧。 刚才我也试过。也不行。
akiko 2003-10-21
  • 打赏
  • 举报
回复
数据占用空间太大啦,栈在抱怨了。
可以定义
arr** ppxy=new arr*[500];
for(int i=0;i<500;++i)
ppxy[i]=new arr[500];
tibetan 2003-10-21
  • 打赏
  • 举报
回复
应该是没有问题的,你用动态申请来以下子,你用的是什么编译器?
bestfyj 2003-10-21
  • 打赏
  • 举报
回复
我忘记了内存分配的限制是多大,但可以确定的是你开的内存已经很大了
遇到这种情况,你可以将这个变量设为全局变量
另外,你在该程序中有文件操作,最好排除文件操作上有逻辑错误的可能
ok,wish u happy

69,335

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧