|
컴파일러에서 지정한 스택 크기가 있습니다.
보통 8192 바이트가 잡혀있습니다. (Turbo C++ Explorer 2006 기준)
Project -> Options -> Linker -> PE file options -> Specify stack commit size 수정
1000*1000 = 0xF4240
이 수치를 1000x1000으로 잡으면 char ch[1000][1000]은 잡힙니다. ^^;
하지만 동적 할당도 한 방법이 될 것 입니다.
int (*i)[10000] = new int[10000][10000];
i[0][0] = 100;
ShowMessage( i[0][0] );
delete[] i;
단, 오른쪽 첨자는 항상 상수값이어야합니다.
int x = 100;
ex) int (*i)[100] = new int[x][100];
cf)
int (*i)[1000][1000] = new int[1000][1000][1000];
i[0][0][0] = 100;
i[0][1][0] = 200;
ShowMessage( i[0][1][0] );
delete[] i;
희소행렬맨 님이 쓰신 글 :
: 안녕하세요 1000 바이 1000 의희소 행렬을 만들려고 하는데요
:
: 컴파일러에서 사이즈 문제때문에 계속 걸리는데 원인이 무엇일까요 ?
:
: 정말 고수님들 답변 부탁드립니다 ㅠㅠ
:
:
:
:
:
:
:
:
:
:
:
: #include <stdio.h>
: #include <stdlib.h>
:
: #define MAXROW 1000 //행을 나타내는 변수
: #define MAXCOL 1000 //열을 나타내는 변수
: #define BUFFER 10000 //입력 버퍼 크기 100으로 지정
:
:
: long MATRIX[MAXROW][MAXCOL];
: int i,j,number;
:
:
:
:
: int main()
: {
: FILE *file; //파일형 변수선언
: int buffer[BUFFER]; //BUFLEN길이 만큼의 파일을 읽기위한 메모리 할당
:
: /////////////////for문에서의 변수사용////////////////////
:
: for (i=0;i<MAXROW;i++)
: {
: for(j=0; j<MAXCOL;j++)
: MATRIX[i][j]=0;
: }
:
: number=1;
:
: for(i=0,j=0; i<MAXROW; i++,j++)
: {
: MATRIX[i][j]=number;
: number=number+1;
: }
:
: for(i=0,j=MAXROW-1; i<MAXROW; i++,j--)
: {
: MATRIX[i][j]=number;
: number=number+1;
: }
:
:
:
:
: file=fopen("input_1.txt","w+");
:
: for (i=0;i<MAXROW;i++)
: {
: for(j=0; j<MAXCOL; j++){
: printf("%4d ",MATRIX[i][j]);
: fprintf(file,"%4d ",MATRIX[i][j]);
: }
: printf("\n");
: fprintf(file,"\n");
:
: }
: fclose(file);
:
: return 0;
: }
|