자연 언어 처리 프로젝트에 C 언어를 사용합니다.정의 함수의 최대 수
사전 파일을 저장하고 싶습니다.
나는 그것이 내가 입력 할 수있는 최대 수 있기 때문에 문제는 번호 46000에 대한 인 정의 다음 문을#define DICSIZE 46000
을 사용했다.
더 큰 번호를 시도하면 프로그램이 중지됩니다.
이 문제를 어떻게 해결할 수 있습니까?
자연 언어 처리 프로젝트에 C 언어를 사용합니다.정의 함수의 최대 수
사전 파일을 저장하고 싶습니다.
나는 그것이 내가 입력 할 수있는 최대 수 있기 때문에 문제는 번호 46000에 대한 인 정의 다음 문을#define DICSIZE 46000
을 사용했다.
더 큰 번호를 시도하면 프로그램이 중지됩니다.
이 문제를 어떻게 해결할 수 있습니까?
DICSIZE
매크로 때문에 프로그램이 중지되지 않습니다. 그것은 사용법입니다.
아마도이 매크로를 배열 크기로 전달하면 일부 배열이 로컬로 (즉, 스택에서) 할당됩니다. 수가 증가 할 때
int myArray[DICSIZE];
그래서, 당신은 문제에 직면 할 수있다. malloc()
을 사용하여 동적으로 메모리를 할당하는 것이 좋습니다.
나는이 같은 기능에 로컬로 선언 된 큰 배열이 의심 :
int main()
{
MyRecordType myArray[DICSIZE];
...
return 0;
}
DICSIZE
큰 도착, myArray
이 커질를, 당신은 스택 공간이 부족. 대신
를 사용하여 동적 메모리 할당 :
int main()
{
MyRecordType * myArray = malloc(DICSIZE * sizeof(myArray[0]));
assert(myArray);
...
free(myArray);
return 0;
}
가 어떻게 코드를 함께 할 수있는 모든 것을 가지고 .... 당신이 먼저이 #DEFINE을 만드는 아무 상관이 없다는 것을 인식해야 문제를 해결하기 이 값을 사용 중입니다. – mah
'DICSIZE'의 적어도 몇 가지 사용법을 보여줍니다 ... – fritzone
아마도 프로그램의 관련 부분을 보여주는 것이 답을 찾는 데 도움이 될 수 있습니다. –