向大牛请教一个Segmentation fault的问题

软件和网站开发以及相关技术探讨
回复
ltpeach
帖子: 13
注册时间: 2009-08-27 21:51
送出感谢: 0
接收感谢: 0

向大牛请教一个Segmentation fault的问题

#1

帖子 ltpeach » 2011-03-03 22:21

如下的程序:
#include <stdio.h>
#define NN 20000
#define NEIGHBOR 100
void main()
{
int neigh[NN][NEIGHBOR],i,j,k;
double poiss[NN][NEIGHBOR],dt,as;
double pcg(int neigh[NN][NEIGHBOR], double poiss[NN][NEIGHBOR], double dt);

for(i=0;i<NN;i++)
{
for(j=0;j<NEIGHBOR;j++)
{
neigh[j]=2;
poiss[j]=3.0;
}
}
dt=10.0;

as=pcg(neigh,poiss,dt);
printf("data is %f\n",as);
}
double pcg(int neigh[NN][NEIGHBOR], double poiss[NN][NEIGHBOR], double dt)
{
return neigh[8][2]+poiss[2][5]*dt;
}

编译运行后就会出现Segmentation fault错误。我的系统是ubuntu 10.04。

如果采用较小的数组,如下的两个宏定义
#define NN 20
#define NEIGHBOR 10
则程序能够运行.
当采用较大的数组时,比如源程序中的两个宏定义,程序就会出现段错误。我计算过,这时程序所需要的内存只有几十M,系统肯定能提供这些内存。
为什么还会出现段错误呢? 请大牛指教,并最好能给出解决方法。由于计算需要,还需要更大的数组.
谢谢啦!
ltpeach
帖子: 13
注册时间: 2009-08-27 21:51
送出感谢: 0
接收感谢: 0

Re: 向大牛请教一个Segmentation fault的问题

#2

帖子 ltpeach » 2011-03-04 12:40

堆栈溢出 已解决
回复

回到 “软件/网站开发”