2014-03-26 3 views
-2

자연 언어 처리 프로젝트에 C 언어를 사용합니다.정의 함수의 최대 수

사전 파일을 저장하고 싶습니다.

나는 그것이 내가 입력 할 수있는 최대 수 있기 때문에 문제는 번호 46000에 대한 인 정의 다음 문을

#define DICSIZE 46000 

을 사용했다.

더 큰 번호를 시도하면 프로그램이 중지됩니다.

이 문제를 어떻게 해결할 수 있습니까?

+2

가 어떻게 코드를 함께 할 수있는 모든 것을 가지고 .... 당신이 먼저이 #DEFINE을 만드는 아무 상관이 없다는 것을 인식해야 문제를 해결하기 이 값을 사용 중입니다. – mah

+2

'DICSIZE'의 적어도 몇 가지 사용법을 보여줍니다 ... – fritzone

+1

아마도 프로그램의 관련 부분을 보여주는 것이 답을 찾는 데 도움이 될 수 있습니다. –

답변

2

DICSIZE 매크로 때문에 프로그램이 중지되지 않습니다. 그것은 사용법입니다.

아마도이 매크로를 배열 크기로 전달하면 일부 배열이 로컬로 (즉, 스택에서) 할당됩니다. 수가 증가 할 때

int myArray[DICSIZE];

그래서, 당신은 문제에 직면 할 수있다. malloc()을 사용하여 동적으로 메모리를 할당하는 것이 좋습니다.

1

나는이 같은 기능에 로컬로 선언 된 큰 배열이 의심 :

int main() 
{ 
    MyRecordType myArray[DICSIZE]; 

    ... 
    return 0; 
} 

DICSIZE 큰 도착, myArray이 커질를, 당신은 스택 공간이 부족. 대신

를 사용하여 동적 메모리 할당 :

int main() 
{ 
    MyRecordType * myArray = malloc(DICSIZE * sizeof(myArray[0])); 
    assert(myArray); 
    ... 
    free(myArray); 
    return 0; 
} 
관련 문제