サイズの大きい配列の生成
Posted: 2012年1月13日(金) 10:27
自分は今、とあるサイズの大きい配列を生成したいのですが、コンパイルは通るのですが実行するとエラーが出てしまい、配列が出力されません。
ソースコードは以下のとおりです。
これで出力されるはずの配列はa[1024][1024]となるはずです。
として、NA=10の場合のa[512][512]は正しく出力されるのを確認しています。
エラーメッセージは以下のとおりです。
_cygtls:handle_exceptions: Erorr while dumpting state (probably corrupted stack)
Segmentation fault (core dumped)
環境はWindows XP での Cygwin 上での実行です。
NA=11で正しく出力するにはどうしたらいいでしょうか? 教えてください。
ソースコードは以下のとおりです。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define NA 11
int main(void)
{
int NB = NA - 1;
int an = pow(2,NB);
int NC = an / 2;
int a[an][an];
int l,k,m;
for(l=0;l<an;l++) for(k=0;k<an;k++) a[l][k]=0;
k = 0;
for(l=0;l<NC;l++){
a[l][k]=1;
a[l][k+1]=1;
k=k+2;
}
k = 0;
for(l=NC;l<an;l++){
a[l][k]=1;
a[l][k+1]=1;
k=k+2;
}
a[0][0]=0;
for(l=0;l<an;l++){
for(k=0;k<an;k++){
for(m=0;m<NA-2;m++){
if ((k >> m) & 1 != 0) {
if((k >> (m+1)) & 1 != 0) {
a[l][k]=0;
a[k][l]=0;
}
}
}
}
}
printf("a[%d][%d]={",an,an);
for(l=0;l<an;l++){
printf("{");
for(k=0;k<an;k++){
printf("%d",a[l][k]);
if(k!=an-1){
printf(",");
}else{
printf("}");
if(l!=an-1) printf(",");
}
}
if(l!=an-1) printf("\n ");
}
printf("};\n");
}
エラーメッセージは以下のとおりです。
_cygtls:handle_exceptions: Erorr while dumpting state (probably corrupted stack)
Segmentation fault (core dumped)
環境はWindows XP での Cygwin 上での実行です。
NA=11で正しく出力するにはどうしたらいいでしょうか? 教えてください。